我已经浏览了许多链接,但没有一个可以解决我的问题。因此,请不要说尽管我以前使用过MySql,但是却没有花费太多精力,但是从未遇到过需要使用子查询的情况。
所以,这是我的疑问。
"SELECT * FROM klms as Klm WHERE gcil_id = (SELECT id FROM gcils WHERE genre = 'Clothes')"
显然我有> 1行以上,其中genre ='Clothes',因此它将返回> 1行。
Error: SQLSTATE[21000]: Cardinality violation: 1242 Subquery returns more than 1 row
顺便说一句,我为我的应用程序使用cakephp,我发现使用SQL查询更容易。
最佳答案
使用IN
而不是等于:
SELECT *
FROM klms as Klm
WHERE gcil_id IN (SELECT id FROM gcils WHERE genre = 'Clothes')
或者您可以使用
INNER JOIN
:SELECT DISTINCT klm.*
FROM klms as Klm
INNER JOIN gcils g ON Klm.gcil_id = gcils.id
WHERE g.genre = 'Clothes'