mysql - SQL查询返回“用作表达式的子查询返回的多行”
问题描述
我有两张桌子:
table1
有列 namea,b
和c
.
table2
有列 named
和e
.
我需要设置只有 if和(它是一个布尔值)的值table1.a
。table1.b
table1.c=table2.d
table2.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
我该如何改变它才能工作?
解决方案
像这样加入表格:
UPDATE table1 t1
INNER JOIN table2 t2
ON t1.c = t2.d
SET t1.a = t1.b
WHERE t2.e;
如果(如你所说)t2.e
是boolean
那么WHERE t2.e
就足够了。
如果是,varchar
那么您将需要WHERE t2.e = 'true'
.
推荐阅读
- python - 我无法弄清楚功能
- java - Enum.values() 或 Enum.class.getEnumConstants() 首选哪种用法?
- python - Pandas:返回每组出现频率最高的值(可能没有应用)
- ssh - Windows 上的 ssh 连接被拒绝(wsl)
- python-3.x - 将列表转换为 PCollection
- c++ - 为什么我的 if 语句在它应该评估的时候没有评估 false?
- arrays - 如何使用 Powershell 为文件中的每一行创建一个新数组?
- azure - 尝试在 Azure 上部署无框架静态 Web 应用程序时,为什么我会从 GitHub Actions 收到构建错误?
- sql-server - 考虑到重叠,有没有更快的方法来增加时间范围?
- ios - 发布内容后的最佳转场