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

标签 mysql

我有两张 table

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 ID 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

最佳答案

您需要一个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

关于mysql - 如何在结果集中添加一列并在该字段中设置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10034043/

相关文章:

mysql - 不带 AFTER 的 ALTER TABLE 与带 AFTER 的 ALTER TABLE

php - MySQL 全文 bool 模式搜索返回太多结果

mysql - 使用mysql查询在表中找到第二个最大值

mysql - 在奇怪的情况下分配之前引用的局部变量

php - 来自 php/mysql 数据库的实时日期时间倒计时问题

mysql - 在 cakephp 上使用算术查找条件

mysql - Django 设置存储引擎和默认字符集

mysql - 需要访问由条件定义的表的字段

mysql - 从两个表中选择,其中 table_1 中只有 1 个唯一结果

mysql - 如何在 MySQL 中使用一条命令统计两个表的行数