比较同一SQL表中的2列

时间:2014-01-28 17:27:55

标签: mysql sql heidisql

我想比较SQL表中2个不同列的值。

A ---------------- B
10 -------------- 88
20 -------------- 401
30 -------------- 20
40 -------------- 99

我希望保留第二列的值等于第一列的值(为20),还要包含第一列的值(包含40的401) 。

所以在这个例子中,我会看到一个C列:

A ---------------- B ----------------- C
10 -------------- 88 ---------------- No
20 -------------- 401 -------------- Yes
30 -------------- 20 ---------------- Yes
40 -------------- 99 ---------------- No

实际上,我可以比较同一行中的字段,但不将此比较应用于列中的所有字段。

有可能吗?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用嵌套的selectcase语句执行此操作。嵌套选择使用like来查看是否存在满足相似性条件的行。请注意,like如果值相同,并且B列以A列开头,则会找到匹配项:

select t.*,
       (case when exists (select 1 from table t2 where t1.B like concat(t2.A, '%'))
             then 'Yes'
             else 'No'
        end) as C
from table t;

编辑:

如果通过包含,您希望'1401'也匹配'40',那么like的模式应为:concat('%', t2.A, '%')