加入2个表并根据where子句提取一列

时间:2013-12-09 12:51:37

标签: mysql sql join

我有2个表都包含track_ids和artist_ids。我想要做的是加入所有track_ids以查看哪个artist_ids与哪个轨道相对应。我想要的结果是,如果我搜索artist_id,它应该返回两个表的结果,换句话说,我需要连接两个表并搜索artist_id。如果找到artist_id,则应返回特定轨道。这个结果也应该是独一无二的。

以下是表格与数据的对比方式

Table1: 
Column names: id [primary key], artist_id, track_id
Column values: 1, 34, 28
Column values: 2, 34, 11
Column values: 3, 34, 33

Table2: 
Column names: id [primary key], track_id, artist_id, 
Column values: 11, 11, 2
Column values: 12, 12, 24
Column values: 13, 13, 2

因此,在上面的示例中,如果我要查找artist_id 34,则查询应该合并2个表,然后搜索artist_id 34并返回track_ids 28,11,33。

2 个答案:

答案 0 :(得分:1)

你可以将两张桌子UNION放在一起。根据定义,UNION运算符返回不同的结果:

SELECT  Track_ID
FROM    Table1
WHERE   Artist_ID = 34
UNION
SELECT  Track_ID
FROM    Table2
WHERE   Artist_ID = 34

答案 1 :(得分:0)

在你给我们的例子中,没有必要JOIN这两个表。你只需要执行:

SELECT *
  FROM Table2
 WHERE artist_id = 34

但是,如果你需要JOIN它们(例如,你需要Table1中的额外字段),它就像这样简单:

 SELECT * 
   FROM Table1
   JOIN Table2 on Table1.id = Table2.artist_id
  WHERE Table1.id = 34