我有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运算符
希望你能帮助我。
谢谢!
答案 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
列表。