我有 2 个表。
用户:
ID CUSTOMID NAME
1 X543 John
2 X354 Jane
3 X389 Jack
4 X123 James
列表:
ID CUSTOMID NAME ADDRESS
1 X543 John address1
2 X543 John address2
3 X543 John address3
4 X543 John address4
5 X543 John address5
6 X354 Jane address1
7 X354 Jane address2
8 X354 Jane address3
9 X389 Jack address1
10 X389 Jack address2
11 X389 Jack address3
12 X389 Jack address4
13 X389 Jack address5
14 X389 Jack address6
我需要以下结果:
ID CUSTOMID NAME MATCHED
1 X543 John 1
2 X354 Jane 1
3 X389 Jack 1
4 X123 James 0
如果列表中有一个 CUSTOMID,那么我需要将标识符添加到用户表中。到目前为止,这是我尝试过的:
SELECT users.*, if(list.CUSTOMID IS NULL, FALSE, TRUE) AS matched from users LEFT JOIN list ON (users.CUSTOMID=list.CUSTOMID)
但是我得到了很多重复项,因为列表中有多个记录具有相同的 CUSTOMID。
最佳答案
您可以使用 CASE 和 EXISTS
Select u.*,
case when exists (
select 1 from list l where u.customid =l.customid
) then 1 else 0 end matched
From users u;
关于mysql - 从一个表中选择所有记录,并显示是否在另一个表中找到该记录的额外字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42304990/