首页 > 解决方案 > SQL查询返回“用作表达式的子查询返回的多行”

问题描述

我有两张桌子:

table1有列 namea,bc.
table2有列 namede.

我需要设置只有 if和(它是一个布尔值)的值table1.atable1.btable1.c=table2.dtable2.e='true'

我写了以下内容:

UPDATE table1 SET a=(

SELECT t1.b
FROM table1 t1

INNER JOIN table2 t2

ON t1.c = t2.d

WHERE t2.e = 'true');

当然得到:

错误:用作表达式的子查询返回多行

********** 错误 **********

错误:用作表达式的子查询返回多行 SQL 状态:21000

我该如何改变它才能工作?

标签: mysqlsql

解决方案


像这样加入表格:

UPDATE table1 t1
INNER JOIN table2 t2
ON t1.c = t2.d
SET t1.a = t1.b
WHERE t2.e;

如果(如你所说)t2.eboolean那么WHERE t2.e就足够了。
如果是,varchar那么您将需要WHERE t2.e = 'true'.


推荐阅读