2010-02-12 138 views
0

我想运行一个嵌套查询,但我得到这个错误,MySQL错误需要一些帮助

#1241 - Operand should contain 1 column(s)

这是我试图运行查询,

SELECT * 
FROM `categoryTable` 
WHERE `categoryId` NOT 
IN (
SELECT `categoryTable`.`categoryId` , `categoryTable`.`categoryTitle` , `userMenuTable`.`menuEntryId` 
FROM (
`categoryTable` 
) 
LEFT JOIN `userMenuTable` ON `categoryTable`.`categoryId` = `userMenuTable`.`categoryId` 
WHERE `userMenuTable`.`cookieId` = 'bang4b696152b4869' 
) 
LIMIT 0 , 30 

回答

0

第5行应该是

SELECT `categoryTable`.`categoryId` 

即它应该只引用categoryId。
换句话说,使用WHERE xyz [NOT] IN (SELECT ...谓词,嵌套select中只应该有一列,其中一列对应于“xyz”列,但当然不一定命名相同。原因是SQL不知道用哪个列嵌套查询来与“xyz”列进行比较;一个较小的原因是其他列是无用的,为什么把他们带入?

+0

如果你从0开始计数:)你是第五行吗? – 2010-02-12 14:55:55

+0

大声笑,查尔斯,对,我的意思是相应的第五条 - 我已经从零开始太久了;-) – mjv 2010-02-12 14:59:21

0

是的。我同意@mjv,基本上你是检查是否categoryId是不是在

`SELECT `categoryTable`.`categoryId` , `categoryTable`.`categoryTitle` , `userMenuTable`.`menuEntryId` 
FROM (
`categoryTable` 
` 

列表所以,你需要提及只有一个字段categoryID,它会检查,看它是否不在此名单。

希望这是有道理的。