Вопрос: 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));
Ошибка, которую я получаю,
ERROR 1241 (21000): Operand should contain 1 column(s)
подзапрос, объединения которого возвращают 2 столбца. Как я могу это исправить?
Лучший ответ:
вам не хватает FROM предложение
SELECT track_id FROM tableName WHERE track_title
поэтому полный запрос будет
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 ) );
еще одна проблема, которая возникнет в ближайшее время, – это использование знака = в результате подзапроса, гораздо безопаснее использовать IN, чем =, потому что он будет генерировать исключение, если, например, в подзапросе будет возвращено более одного значения. Пример,
INSERT INTO People (Track_id_Reference) SELECT track_id FROM — <<== add tableName here WHERE track_title IN ( SELECT tracktitle FROM top100 ………….