Raa*_*esh 3 mysql sql mysql-error-1241
INSERT INTO People(Track_id_Reference)
SELECT track_id
FROM Tracks
WHERE track_title IN (SELECT tracktitle
FROM top100
WHERE artist IN (SELECT p.People_name, t.artist
FROM People AS p
RIGHT JOIN top100 AS t
ON
p.People_name=t.artist
UNION DISTINCT
SELECT p.People_name, t.artist
FROM People AS p
LEFT JOIN top100 AS t
ON
p.People_name=t.artist));Run Code Online (Sandbox Code Playgroud)
我得到的错误是
ERROR 1241 (21000): Operand should contain 1 column(s)
子查询哪个联合会返回2列.我怎样才能解决这个问题?
你缺乏FROM条款
SELECT track_id
FROM tableName
WHERE track_title
Run Code Online (Sandbox Code Playgroud)
所以完整的查询将是
INSERT INTO People (Track_id_Reference)
SELECT track_id
FROM -- <<== add tableName here
WHERE track_title = (
SELECT tracktitle
FROM top100
WHERE artist = (
SELECT p.People_name,
t.artist
FROM People AS p
RIGHT JOIN top100 AS t
ON p.People_name = t.artist
UNION
DISTINCT
SELECT p.People_name,
t.artist
FROM People AS p
LEFT JOIN top100 AS t
ON p.People_name = t.artist
)
);
Run Code Online (Sandbox Code Playgroud)
很快就会出现的另一个问题是在=子查询的结果上使用等号,它使用起来IN要比=因为例如子查询将返回多个值而抛出异常更安全.例,
INSERT INTO People (Track_id_Reference)
SELECT track_id
FROM -- <<== add tableName here
WHERE track_title IN (
SELECT tracktitle
FROM top100 .............
Run Code Online (Sandbox Code Playgroud)