Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 根据where子句连接两个表并提取一列_Mysql_Sql_Join - Fatal编程技术网

Mysql 根据where子句连接两个表并提取一列

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:

我有两张桌子,都有曲目ID和艺术家ID。我想做的是加入所有的曲目ID,看看哪个艺术家ID对应于哪个曲目。我想要的结果是,如果我搜索艺术家id,它应该返回两个表的结果,换句话说,我需要连接两个表并搜索艺术家id。如果找到艺术家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,那么查询应该组合这两个表,然后搜索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或两者中