Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在同一列中选择多个值?_Mysql - Fatal编程技术网

Mysql 如何在同一列中选择多个值?

Mysql 如何在同一列中选择多个值?,mysql,Mysql,我试图在一列中选择多个值。基本上,我希望查询选择列family下的所有值Software_1Y、XI_1Y和P1_1Y 我正在运行此查询: SELECT `salesorder` ,`masterproduct` ,`family` ,`birthstamp` ,`duedate` ,COUNT(*) AS `total` FROM `report` WHERE `birthstamp` BETWEEN '$startDT' AND '$e

我试图在一列中选择多个值。基本上,我希望查询选择列
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`;
我的查询不返回任何行,但当我逐个搜索每个族时,我有值

我的问题出了什么问题


另外,我的目的是获取
系列
值为
Software_1Y
XI_1Y
PI_1Y
的所有行

改用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`;
没有返回值的原因是因为此部分

AND `family` = 'Software_1Y' 
AND `family = 'XI_1Y' 
AND `family` = 'PI_1Y'
不能同时是所有3个值,但它可能是3个值中的1个

这就是为什么你会在中使用

另一种看待它的方式是使用OR,但这会变得非常冗长

$query="   SELECT `salesorder`,`masterproduct`,`family`,`birthstamp`,`duedate`, COUNT( * ) AS `total` FROM `report` 
    WHERE `birthstamp` BETWEEN '$startDT' AND '$endDT' 
           AND (`family` = 'Software_1Y' 
           OR `family` = 'XI_1Y' 
           OR `family` = 'PI_1Y') 
    GROUP BY `salesorder`,`masterproduct`,`family`,`duedate` ";
查询“族”列时,它必须是由于而不是或

$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) 
{
//Operation you want to perform
}

@jude:看起来您是直接将string类型的查询作为参数传递给mysql\u fetch\u数组,这是错误的。相反,请遵循上述方法……

在中使用
,或更改为
`family`='Software\u 1Y'或`family`='XI\u 1Y'或`family`='PI\u 1Y'
如果我错了请更正,但如果我使用了
则我只得到一行对吗?我的目的是获取所有那些带有
系列
值的行。您可能希望在ORs周围放一些括号。。。和(
family
='Software\u 1Y'或
family='XI\u 1Y'或
family`='PI\u 1Y')@astander:是的。。。我也想到了。但后来我想它真的会影响这个特殊情况下的条件吗?是的,它肯定会,正如你所看到的那样,操作符的顺序是(“$startDT”和“$endDT”和
family
='Software\u 1Y”)或
family
='xiu 1Y'或
family
='PI\u 1Y',这意味着你的SQL中有错误。您不检查mysql\u查询中的错误吗?错误消息应该告诉您错误在哪里。这是迄今为止对此类查询的最好解释。谢谢阿斯坦德