MySQL选择中的选择

时间:2018-08-18 17:33:44

标签: mysql subquery distinct

我写的时候:

SELECT DISTINCT `codeArticle`
 FROM hs 
 WHERE `dateFacture` BETWEEN '2017-01-01'  AND '2017-12-31' 
 AND `codefamilleArticle` = 'COT'

我得到了一个很好的答案:

codeArticle COTFPR2017
COTFP2017
COTE2017
COTB2017
COTAP2018
COTAPR2018
COTJ2017
COTAB2018
COTAJ2018
COTAE2018

但是我想获得有关此列表的一些详细信息,然后写:

SELECT codefamilleArticle,codeArticle,article 
FROM hs 
WHERE codeArticle = ( 
    SELECT DISTINCT codeArticle 
    FROM hs 
    WHERE dateFacture BETWEEN '2017-01-01' AND '2017-12-31'
    AND codefamilleArticle = 'COT'
)

然后发生错误,我得到了:

MySQL的响应:文档

1242-子查询返回多于1行

怎么了?

2 个答案:

答案 0 :(得分:1)

您可以使用IN

SELECT codefamilleArticle,codeArticle,articleFROM hs WHERE codeArticle IN ( SELECT DISTINCT codeArticle FROM hs WHERE dateFacture BETWEEN '2017-01-01' AND '2017-12-31' AND codefamilleArticle = 'COT')

答案 1 :(得分:0)

您可以使用= ANYIN

SELECT codefamilleArticle,codeArticle,article
FROM hs
WHERE codeArticle = ANY (SELECT codeArticle -- DISTINCT in not needed
                         FROM hs
                         WHERE dateFacture BETWEEN '2017-01-01' AND '2017-12-31' 
                           AND codefamilleArticle = 'COT')