我有两张桌子
人
name id
man1 456
man2 123
man3 789
备注
content id
testing 123
hello 456
我有两个查询,如果存在该人的注释,则从表people
中选择记录。
SELECT * FROM PEOPLE WHERE ID IN (SELECT ID FROM NOTES)
name id
man1 456
man2 123
并且
SELECT * FROM PEOPLE WHERE ID NOT IN(SELECT NOT FROM NOTES)
name id
man3 789
我想在结果集中创建一个列(不在实际表中),并根据是否存在注释来设置字段的值。
name id does_note_exist
man1 456 yes
man2 123 yes
man3 789 no
执行此操作的适当语法是什么?像这样的东西将是我正在寻找的东西:
IF ID IN (SELECT ID FROM NOTES)
does_note_exist = yes
IF ID NOT IN (SELECT ID FROM NOTES)
does_note_exist = no
答案 0 :(得分:3)
您需要LEFT OUTER JOIN
:
SELECT
p.id,
p.name,
CASE WHEN n.id IS NULL THEN 'no' ELSE 'yes' END AS does_note_exist
FROM people p
LEFT OUTER JOIN notes n
ON n.id = p.id
GROUP BY n.id
答案 1 :(得分:0)
有很多方法可以做到这一点 - 我想我会使用一个案例陈述: http://dev.mysql.com/doc/refman/5.0/en/case-statement.html