mysql - 在mysql中选择父是否有子

标签 mysql left-join right-join

我需要选择所有用户,无论他们是否有图像,如果有,则选择主图像。这对你来说可能很简单,但对我来说却很难。

我有 2 个表 users , images

Users Table

Id | name | 
1    xyz    
2    abc
3    qwe
4    rty

Images Table

Id  | user_id | image_path  | is_primary
1     1           path          0
2     1          path           1
3     2          path           1
4     4          path           0



**Result I'm expecting**

name  |  image_path  | is_primary
xyz   |  path        | 1
abc   |  path        | 1
qwe   |  null        | 0         (this user has no image in images table)
rty   |  path        | 0

我不知道该怎么做。它对我来说看起来很复杂,因为我知道它不能只用 "AND"、 "Having"或 "sub query"来完成。

最佳答案

试试这个:

SELECT 
    users.name, Images.image_path, IF(MAX(Images.is_primary)=1, 1, 0)
FROM 
    users 
LEFT JOIN 
    Images 
ON 
    Images.user_id = users.Id
GROUP BY 
    users.Id

让我们用 MAX 添加一个聚合......

关于mysql - 在mysql中选择父是否有子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40798586/

相关文章:

php - 强制 MySQL 的 GROUP BY 为空组生成结果的技术?

MySQL:同一个 LEFT JOIN 表中的多个计数不起作用

mysql - 将 RIGHT JOIN 转换为 LEFT OUTER JOIN 以获取相同的数据

mysql - 如何优化连接 3 个表的 SQL 查询

MySql 连接具有多个正确出现之一

mysql - 如何从表中选择数据是另一个表中的行数据

mysql - #1248 - 每个派生表都必须有自己的别名

php - 如何在 MySQL 中对值进行分组

r - 双左加入 dplyr 以恢复值

php - SQL join into join 创建好数组