1

我有两张桌子

人们

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(从注释中选择 ID)

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
4

2 回答 2

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
于 2012-04-05T18:39:43.397 回答
0

有很多方法可以做到这一点 - 我想我会使用案例声明: http ://dev.mysql.com/doc/refman/5.0/en/case-statement.html

于 2012-04-05T18:38:10.043 回答