首页 > 解决方案 > 比较子查询中的两列值

问题描述

我想做以下事情:

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
    )

标签: mysql

解决方案


不知道是否最好,但我找到了以下解决方案:

WHERE table1.Id IN(
    SELECT IF(Id1 = table1.Id, Id1, Id2)
    FROM table2
    WHERE Id = 1234
)

不幸的是,@lucumt 答案不起作用,因为 table1.Id 是数字并且 CONTACT 函数创建了一个字符串。


推荐阅读