sql - 如何避免子查询中的重复数据
问题描述
我有两个表如下。
产品表:
+-----+------------+-----+-------+--------+
| id | activityId | age | queue | status |
+-----+------------+-----+-------+--------+
| 100 | 2 | 0 | start | 2 |
| 101 | 3 | 0 | in | 5 |
+-----+------------+-----+-------+--------+
部门表:
+-----+------------+-------+----------+
| id | activityId | queue | exittime |
+-----+------------+-------+----------+
| 100 | 1 | new | null |
| 100 | 2 | start | null |
| 100 | 2 | start | null |
| 101 | 1 | new | null |
| 101 | 1 | new | null |
| 101 | 3 | in | null |
| 101 | 3 | in | null |
+-----+------------+-------+----------+
我正在尝试使用以下查询更新产品表年龄列。但其返回错误为 ORA-01427 单行子查询返回多于一行。
update Product pd set pd.age = (select (case when dp.exittime!= null then
(sysdate - dp.exittime)
else ( case when pd.queue = dp.queue
then (select (sysdate - dp1.entrytime) from department dp1 where pd.id = dp1.id
) else 2 END) END)
from department dp
where dp.id > 1
AND pd.id = dp.id
AND pd.status in('1','7','2','5')
AND pd.queue= dp.queue
AND pd.activityId = dp.activityId )
where exists
(select 1 from department dp
where dp.id > 1
AND pd.id = dp.id
AND pd.status in('1','7','2','5')
AND pd.queue= dp.queue
AND pd.activityId = dp.activityId );
由于部门表中的 activityId,子查询返回多个值。如何避免子查询返回多个值。
解决方案
此查询将识别您获得多行的场景。
select
dp.id,
dp.queue,
dp.activityId,
COUNT(*)
from
department dp
inner join
product pd
ON pd.id = dp.id
AND pd.queue= dp.queue
AND pd.activityId = dp.activityId
where
dp.id > 1
AND pd.status in('1','7','2','5')
GROUP BY
dp.id,
dp.queue,
dp.activityId
HAVING
COUNT(*) > 1
对于这些情况,您需要确定以下其中一项...
- 如何修复数据只返回一行
- 如何修复查询以仅返回一行
- 如何从返回的多行中只选择一行
由于我们看不到您的数据,因此我们无法为您解决任何问题。
但是,在调查之后,您可能会返回一个更具体的问题。
推荐阅读
- powershell - 使用 Powershell 清理 CSV 数据
- php - 由于“echo”语句不返回任何值,“三元运算符”即“条件运算符”如何与“echo”语句一起使用?
- r - 如何根据Excel,R中的部分字符串匹配重新排列行内的单元格
- linux - 何时使用 /opt?创建 Debian 软件包时何时使用 /usr/local/ 而不是 /usr/
- javascript - 如何编辑“bal”的值
- java - 值溢出指定的精度 0,比例为 0
- google-cloud-firestore - 使用本地运行的 Firebase 函数模拟器访问 Cload Firestore 数据库
- sql - 与 group by 一起使用时,cross apply 的行为很奇怪
- angular - 如何在另一个网站上嵌入 Angular 应用程序?
- data-structures - PST 文件中使用的这个“BTree”变体是什么?