mysql - 查询未返回结果,左连接

标签 mysql

我有两个表,我正在尝试查询并使用左连接来获取结果。问题是我的查询没有返回任何记录。

我的第一个表包含我所有的艺术家:

艺术家

id | name
------------------------
4    Damien Rice
5    John Mayer 
6    Pink Floyd

我的第二个表包含所有艺术家流派

艺术家流派

id | artist_id | genre_name
------------------------
7     6         Jam
17    6         Rock
16    6         Blues

我的查询,但没有返回结果。

SELECT    a.*, ag.*
FROM      Artist a
LEFT JOIN ArtistGenre ag
ON        ag.artist_id=a.id
WHERE     a.id IS NOT NULL
AND       ag.id IN (7,17,16) 

我做错了什么?

最佳答案

您的 where 条件正在将 left join 转换为 inner join(因为不匹配的行的值为 NULL for ag.id 失败了IN)。将第二个条件移至 on 子句:

SELECT a.*, ag.*
FROM Artist a LEFT JOIN
     ArtistGenre ag
     ON ag.artist_id = a.id AND ag.id IN (7, 17, 16)
WHERE a.id IS NOT NULL;

关于mysql - 查询未返回结果,左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32975113/

相关文章:

php - 如何在 PHP 中使用不同文件名的 .TXT 文件打开

MySQL utf8mb4 外键错误

php - 获取合并的两个表(不显示想要的结果)

java - 如何查找字符串中的一组单词?

mysql - 无法使用 AS 关键字添加 MySql 自动生成的列

php - MySQL 中的数组

mysql left join with limit 0,2

mysql - 需要更正以下触发器中的语法错误,使用 phpMyAdmin 来执行它

php - mysqli_connect fatal error : require()

php - 如何创建一个函数来获取变量、检索变量并在预览页面上访问它们