table1
id name
1 john
2 mary
3 bill
4 carrie
table2
id thing
1 ball
2 socks
tableJoin
id name_fk thing_fk
1 1 1
2 4 2
我想要一个查询,从tableJoin中选择table1中的所有名称和“table2中的关系”列,如下所示:
tableResult:
columnName columnRelationshipExists
john YES
mary NO
bill NO
carrie YES
答案 0 :(得分:2)
可以使用相关子查询:
SELECT name, EXISTS(SELECT * FROM tableJoin WHERE tableJoin.name_fk = table1.id)
FROM table1;
或者是分组外部联接:
SELECT table1.name, COUNT(tableJoin.name_fk) > 0
FROM table1 LEFT JOIN tableJoin ON tableJoin.name_fk = table1.id
GROUP BY table1.name;
在sqlfiddle上查看。
答案 1 :(得分:0)
另一种选择:
SELECT t1.name, tj.id IS NOT NULL
FROM table1 t1
LEFT JOIN tableJoin tj ON tj.name_fk = t1.id
GROUP BY t1.name
我没有测试过,但我的感觉是IS NOT NULL
会比EXISTS(SELECT)
和COUNT