mysql - 比较子查询中的两列值
问题描述
我想做以下事情:
WHERE table1.Id IN(
SELECT Id1, Id2
FROM table2
WHERE Id = 1234
)
但问题是子查询是行子查询并产生错误。
有什么方法可以将 Id1 和 Id2 从列转换为行,以便在 IN 比较中使用?
到目前为止,我发现这样做的唯一方法是这样,这并不理想:
WHERE
table1.Id = (
SELECT Id1
FROM table2
WHERE Id = 1234
) OR
table1.Id = (
SELECT Id2
FROM table2
WHERE Id = 1234
)
解决方案
不知道是否最好,但我找到了以下解决方案:
WHERE table1.Id IN(
SELECT IF(Id1 = table1.Id, Id1, Id2)
FROM table2
WHERE Id = 1234
)
不幸的是,@lucumt 答案不起作用,因为 table1.Id 是数字并且 CONTACT 函数创建了一个字符串。
推荐阅读
- android - Android:为什么即使对象为空,数据绑定也不强制 NullPointerException
- sqlite - 如何阅读 Chrome Cookie 文件?
- julia - Julia:如何获取 NamedTuple 的名称?
- excel-formula - 每次目标单元格A增加时,如何使单元格B减少?
- reference - 转换 Vec
> 到 &[&Foo] 在 Rust - swift - 如何沿 x 轴垂直旋转 CaLayer?
- ios - ld:找不到框架 Pods_MyProject_MyProjectTests
- javascript - 代理:使用代理对象时调用目标父级的静态方法
- tensorflow - protobuf 导致的 TensorFlow 检查点错误
- android-studio - 当我尝试在我的设备中安装 APK 文件时,它们显示错误