0

我已经浏览了很多链接,但没有一个可以解决我的问题。所以请不要说虽然我以前在 MySql 上工作过但从未遇到过需要使用子查询的情况,但它显示的工作量更少。所以,这是我的疑问..

"SELECT * FROM klms as Klm WHERE gcil_id = (SELECT id FROM gcils WHERE genre = 'Clothes')"

显然我有超过 >1 行,其中流派 = '衣服' 所以它会返回 >1 行.. 但是它显示了这个错误

Error: SQLSTATE[21000]: Cardinality violation: 1242 Subquery returns more than 1 row

顺便说一句,我在我的应用程序中使用 cakephp,我发现使用 SQL 查询更容易。

4

1 回答 1

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'
于 2013-02-19T19:25:10.683 回答