mysql - 如果关系存在或不存在,请选择 TRUE 或 FALSE

标签 mysql sql

表1

    id  name

    1   john
    2   mary
    3   bill
    4   carrie

表2

    id  thing

    1   ball
    2   socks

表连接

    id  name_fk    thing_fk

    1     1           1
    2     4           2

我想要一个查询,该查询从 tableJoin 中选择 table1 中的所有名称和“table2 中存在关系”列,如下所示:

表格结果:

columnName     columnRelationshipExists

 john            YES
 mary            NO
 bill            NO
 carrie          YES

最佳答案

可以使用相关子查询:

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 上查看它们.

关于mysql - 如果关系存在或不存在,请选择 TRUE 或 FALSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21009165/

相关文章:

mysql - 哪里使用MYSQL查询缓存

mysql - 从 Django 连接到 RDS MySQL 时出现 SSL 连接错误

sql - 如何在 Redshift 中计算以 2 为底的对数

mysql - SQL 从 3 个表中选择并合并列名

php - 终止 php 中数据库例程(重复)工作的最佳方法是什么

mysql - 将值从表复制到表 MYSQL

php - 为什么 MySQL 的 LEFT JOIN 在使用 WHERE 子句时返回 "NULL"条记录?

MySQL : i need hel p Subquery

sql - 两列上的 group by 索引

php - 在 SQL 中联合还是单独查询然后使用 php array_merge 更好?