Mysql 根据where子句连接两个表并提取一列
我有两张桌子,都有曲目ID和艺术家ID。我想做的是加入所有的曲目ID,看看哪个艺术家ID对应于哪个曲目。我想要的结果是,如果我搜索艺术家id,它应该返回两个表的结果,换句话说,我需要连接两个表并搜索艺术家id。如果找到艺术家id,它应该返回特定的曲目。这个结果也应该是独一无二的 下面是数据表的外观Mysql 根据where子句连接两个表并提取一列,mysql,sql,join,Mysql,Sql,Join,我有两张桌子,都有曲目ID和艺术家ID。我想做的是加入所有的曲目ID,看看哪个艺术家ID对应于哪个曲目。我想要的结果是,如果我搜索艺术家id,它应该返回两个表的结果,换句话说,我需要连接两个表并搜索艺术家id。如果找到艺术家id,它应该返回特定的曲目。这个结果也应该是独一无二的 下面是数据表的外观 Table1: Column names: id [primary key], artist_id, track_id Column values: 1, 34, 28 Column values:
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,那么查询应该组合这两个表,然后搜索artist_id 34并返回track_id 28,11,33 在您给我们的示例中,没有必要将这两个表连接起来。您只需要执行:
SELECT *
FROM Table2
WHERE artist_id = 34
但是,如果您需要加入它们(例如,您需要表1
中的额外字段),那么它非常简单:
SELECT *
FROM Table1
JOIN Table2 on Table1.id = Table2.artist_id
WHERE Table1.id = 34
在您给我们的示例中,不需要连接这两个表。您只需要执行:
SELECT *
FROM Table2
WHERE artist_id = 34
但是,如果您需要加入它们(例如,您需要表1
中的额外字段),那么它非常简单:
SELECT *
FROM Table1
JOIN Table2 on Table1.id = Table2.artist_id
WHERE Table1.id = 34
你可以把两张桌子放在一起。根据定义,UNION运算符返回不同的结果:
SELECT Track_ID
FROM Table1
WHERE Artist_ID = 34
UNION
SELECT Track_ID
FROM Table2
WHERE Artist_ID = 34
你可以把两张桌子放在一起。根据定义,UNION运算符返回不同的结果:
SELECT Track_ID
FROM Table1
WHERE Artist_ID = 34
UNION
SELECT Track_ID
FROM Table2
WHERE Artist_ID = 34
连接的原因是搜索两个表以查找曲目id。在您的示例中,这样做吗?艺术家id
是否可能存在于表2
中,但不存在于表1
中?它们可能存在于表1或表2中,或者两者都存在。连接的原因是搜索两个表以查找您的曲目id例如,会这样做吗?是否可能艺术家id
存在于表2
中,而不存在于表1
中?它们可能存在于表1或表2或两者中