Mysql子查询返回多行

时间:2013-02-19 19:24:11

标签: mysql

我已经通过了许多链接,但没有一个可以解决我的问题。所以请不要说它虽然我之前曾在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查询更容易。

1 个答案:

答案 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'