#1241 - 操作数应包含1列IN

时间:2013-09-19 18:14:48

标签: mysql sql distinct mysql-error-1241

我有mysql 5.6版本的问题。 对不起,如果我的英语很糟糕,如果格式不合适,对不起,我很着急。

Mysql从此查询中抛出此错误“#1241 - 操作数应包含1列”:

SELECT DISTINCT (P.`P_nombre`, P.`P_raza`)

FROM    `Perros` AS P,
        `Adiestramientos` as A

WHERE   P.`P_codigo` = A.`P_codigo` AND A.`A_nroLegajo` = '1500'
AND P.`P_codigo` NOT IN(
        SELECT  A.`P_codigo`
        FROM    `Adiestramientos` as A
        WHERE A.`A_nroLegajo`= '4600'
        )

似乎在Mysql 5.0上工作正常,问题似乎是在IN运算符

希望你能帮助我。

谢谢!

3 个答案:

答案 0 :(得分:1)

您在同一个表中使用A标识符两次 - 在内部和外部查询中。将一个改为不同的,例如A2

SELECT DISTINCT P.`P_nombre`, P.`P_raza`
FROM    `Perros` AS P,
        `Adiestramientos` as A
WHERE   P.`P_codigo` = A.`P_codigo` AND A.`A_nroLegajo` = '1500'
AND P.`P_codigo` NOT IN(
        SELECT  A2.`P_codigo`
        FROM    `Adiestramientos` as A2
        WHERE A2.`A_nroLegajo`= '4600'
        )

答案 1 :(得分:1)

您获得的error表示: -

MySQL不支持以下格式的语句:

SELECT * FROM t1 WHERE s1 IN (SELECT s2 FROM t2 ORDER BY s1 LIMIT 1)

在您的情况下,您必须更改标识符A,因为它使用了两次。

试试这个: -

SELECT DISTINCT P.`P_nombre`, P.`P_raza`
FROM    `Perros` AS P,
        `Adiestramientos` as A
WHERE   P.`P_codigo` = A.`P_codigo` AND A.`A_nroLegajo` = '1500'
AND P.`P_codigo` NOT IN(
        SELECT  A1.`P_codigo`
        FROM    `Adiestramientos` as A1
        WHERE A1.`A_nroLegajo`= '4600'
        )

答案 2 :(得分:1)

将括号放在选择列表中:

SELECT  DISTINCT
        P.`P_nombre`, P.`P_raza`
FROM    `Perros` AS P,
        `Adiestramientos` as A
WHERE   P.`P_codigo` = A.`P_codigo`
        AND A.`A_nroLegajo` = '1500'
        AND P.`P_codigo` NOT IN
        (
        SELECT  A2.`P_codigo`
        FROM    `Adiestramientos` as A2
        WHERE   A2.`A_nroLegajo`= '4600'
        )

MySQL不允许选择元组作为一个字段,DISTINCT无论如何都适用于整个SELECT列表。