我试图在一列中选择多个值.基本上我想查询以选择下列所有那些family与价值观Software_1Y,XI_1Y并P1_1Y
我正在运行此查询:
SELECT `salesorder`
,`masterproduct`
,`family`
,`birthstamp`
,`duedate`
,COUNT(*) AS `total`
FROM `report`
WHERE `birthstamp` BETWEEN '$startDT'
AND '$endDT'
AND `family` = 'Software_1Y'
AND `family = 'XI_1Y'
AND `family` = 'PI_1Y'
GROUP BY `salesorder`
,`masterproduct`
,`family`
,`duedate`;
Run Code Online (Sandbox Code Playgroud)
我的查询没有返回任何行但是我逐个搜索每个家庭,我有值.
我的查询有什么问题?
另外,我的目的是让所有那些行family值Software_1Y,XI_1Y和PI_1Y.
Adr*_*der 14
如何使用IN代替
SELECT `salesorder`,
`masterproduct`,
`family`,
`birthstamp`,
`duedate`,
COUNT( * ) AS `total`
FROM `report`
WHERE `birthstamp` BETWEEN '$startDT' AND '$endDT'
AND `family` IN ('Software_1Y','XI_1Y','PI_1Y')
GROUP BY `salesorder`,
`masterproduct`,
`family`,
`duedate`;
Run Code Online (Sandbox Code Playgroud)
没有返回值的原因是因为本节
AND `family` = 'Software_1Y'
AND `family = 'XI_1Y'
AND `family` = 'PI_1Y'
Run Code Online (Sandbox Code Playgroud)
family 不能同时为3个值,但可能是3个值中的1个.
这就是你使用IN的原因.
另一种看待它的方法是使用OR,但这会很长.