MySQL多个内连接不返回行

时间:2014-11-11 22:00:18

标签: mysql

我正在尝试创建一个从三个表中选择的查询。

m_release
---------------------------
 release_id       name     
---------------------------
  1               release1  
  2               release2   
  3               release3 


mk_release_artist
---------------------------
 release_id       artist_id    
---------------------------
  1               134  
  2               135 


mk_release_remix
---------------------------
 release_id       artist_id    
---------------------------
  3               134            

到目前为止,我已创建了以下查询,但它不会返回任何行:

SELECT * FROM m_release A
JOIN mk_release_artist B ON A.release_id = B.release_id AND B.artist_id = 134
JOIN mk_release_remix C ON A.release_id = C.release_id AND C.artist_id = 134

当我使用一个JOIN

从两个表中选择时,它正在工作
SELECT * FROM m_release A
JOIN mk_release_artist B ON A.release_id = B.release_id AND B.artist_id = 134

我期望看到的输出是:

---------------------------
 release_id       name     
---------------------------
  1               release1    
  3               release3 

2 个答案:

答案 0 :(得分:0)

因此,在B中,author_id是作者,而在C中,它是混音师。然后您的查询选择条目,其中作者和混音器是id=134 。在您的示例中没有匹配的条目。

juergen d's query会选择作者或混音器id的条目。由于它使用LEFT JOIN s,它甚至会获得BC中没有相应条目的版本(相应的列将为NULL)。

答案 1 :(得分:0)

SELECT A.* 
FROM m_release A
LEFT JOIN mk_release_artist B ON A.release_id = B.release_id
LEFT JOIN mk_release_remix C ON A.release_id = C.release_id
WHERE 134 in (B.artist_id, C.artist_id)