如何在结果集中添加列并在该字段中设置值?

时间:2012-04-05 18:35:17

标签: mysql

我有两张桌子

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

2 个答案:

答案 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