SELECT (b.descr || ' - ' || c.descr) description
FROM table1 a
INNER JOIN table2 b ON a.account = b.account
INNER JOIN table3 c ON a.product = c.product
WHERE a.descr = ' ' ;
如何使用上面的子查询更新表?它返回超过一行近8000行?如果您有任何解决方案,请与我分享?
答案 0 :(得分:1)
我不明白你想要做什么,但你可以在subselect语句中使用子查询:
UPDATE table1 a SET a.descr = (
SELECT MAX(b.descr || ' - ' || c.descr)
FROM table2 b, table3 c
WHERE b.account = a.account AND c.product = a.product
)
WHERE a.descr = ' '
MAX()只会为您选择一个值。如果您想自己选择,请进一步限制子查询
答案 1 :(得分:1)
在Oracle和& SQL Sever,如果子查询返回超过1行,数据库将报告错误。
在您的情况下,如果子查询结果值相同,只需使用MAX()或MIN()函数让DB选择一个值。
答案 2 :(得分:0)
尝试:
UPDATE a SET descr = (b.descr || ' - ' || c.descr)
FROM table1 a
INNER JOIN table2 b ON a.account = b.account
INNER JOIN table3 c ON a.product = c.product
WHERE a.descr = ' ' ;
如果有多行,则table1将以最后一行结束。
罗布