这个问题在这里已经有答案了:
mysql错误“操作数应包含1列”[重复](5个答案)
两年前关门了。
我得到错误代码“#1241:操作数应包含1列”。代码运行过一次,但我没有修改。但现在它不起作用了。
有什么问题?这是和in接线员有关的。
代码如下:
SELECT DISTINCT
composition.compartikelnr,
composition.artikelnr,
aantal
FROM
webshops.composition
WHERE
composition.compartikelnr IN (
SELECT
producten.artikelnr,
producten.merk,
producten.producttype,
producten.naam,
producten.hoeveelheid,
producten.eenheid,
producten.kleur,
prodprice.eurotoner,
producten.ean,
producten.seourl,
image.image,
producten.staat,
producten.huismerk,
producten.shopping
FROM
webshops.producten
LEFT JOIN
webshops.prodprice
ON producten.artikelnr = prodprice.artikelnr
LEFT JOIN (SELECT * FROM webshops.prodimage WHERE priority = 1) image ON producten.artikelnr = image.artikelnr
WHERE
image.image <> '' AND
producten.active = 1 AND
producten.ean <> '' AND
producten.shopping = 1
) AND
composition.artikelnr IN (
SELECT
producten.artikelnr,
producten.merk,
producten.producttype,
producten.naam,
producten.hoeveelheid,
producten.eenheid,
producten.kleur,
prodprice.eurotoner,
producten.ean,
producten.seourl,
image.image,
producten.staat,
producten.huismerk,
producten.shopping
FROM
webshops.producten
LEFT JOIN webshops.prodprice ON producten.artikelnr = prodprice.artikelnr
LEFT JOIN (SELECT * FROM webshops.prodimage WHERE priority = 1) image ON producten.artikelnr = image.artikelnr
WHERE
image.image <> '' AND
producten.active = 1 AND
producten.ean <> '' AND
producten.shopping = 1
)
1条答案
按热度按时间70gysomp1#
你已经写好了
IN( SELECT more,than,one,column,here FROM..)
in要求您从子查询中只选择一列,因此请选择与您所处位置相关的列。也许是这样的:
但我对您的数据结构一无所知,我只是根据名称找到了似乎与artikelnr相关的列。我不保证我发布的这段代码能正常工作,只是它演示了我所说的“在select查询中只选择括号内的一列”
代码运行过一次,但我没有修改。但现在它不起作用了。
恐怕这不太可能。。我对此的唯一解释是,mysql有一些神奇的特性设置,允许您在in中选择多个列,它知道要选择什么(或者盲目地选择第一列),并且有人更改了设置。如果它确实有这样的设置,那么将其更改为与其他数据库一样的行为将是一件好事