#1241:操作数应包含1列

bkkx9g8r  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(392)

这个问题在这里已经有答案了

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
    )
70gysomp

70gysomp1#

你已经写好了 IN( SELECT more,than,one,column,here FROM..) in要求您从子查询中只选择一列,因此请选择与您所处位置相关的列。
也许是这样的:

SELECT DISTINCT 
    composition.compartikelnr, 
    composition.artikelnr,
    aantal 
FROM 
    webshops.composition 
WHERE 
    composition.compartikelnr IN (
        SELECT 
            producten.artikelnr 
        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
        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
    )

但我对您的数据结构一无所知,我只是根据名称找到了似乎与artikelnr相关的列。我不保证我发布的这段代码能正常工作,只是它演示了我所说的“在select查询中只选择括号内的一列”
代码运行过一次,但我没有修改。但现在它不起作用了。
恐怕这不太可能。。我对此的唯一解释是,mysql有一些神奇的特性设置,允许您在in中选择多个列,它知道要选择什么(或者盲目地选择第一列),并且有人更改了设置。如果它确实有这样的设置,那么将其更改为与其他数据库一样的行为将是一件好事

相关问题