我已经浏览了许多链接,但没有一个可以解决我的问题。因此,请不要说尽管我以前使用过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'

10-08 06:49