我已经通过了许多链接,但没有一个可以解决我的问题。所以请不要说它虽然我之前曾在MySql上工作但显示的努力较少,但从未遇到过我需要使用子查询的情况。 所以,这是我的疑问......
"SELECT * FROM klms as Klm WHERE gcil_id = (SELECT id FROM gcils WHERE genre = 'Clothes')"
显然,我有超过> 1行,其中genre ='衣服'所以它会返回> 1行..但是它会显示此错误
Error: SQLSTATE[21000]: Cardinality violation: 1242 Subquery returns more than 1 row
btw我正在使用cakephp来购买我的应用程序&我发现使用SQL查询更容易。
答案 0 :(得分:2)
使用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'