Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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_Sql - Fatal编程技术网

无法从mysql将两个查询的结果合并为一个查询

无法从mysql将两个查询的结果合并为一个查询,mysql,sql,Mysql,Sql,我有两个问题。第一个将返回10行,第二个查询将返回2行。但是,当我将查询合并为一个查询时,它仍然只返回10行 以下是我的疑问 SELECT * FROM contentmsg WHERE apmc_id = '5284a327e4b0bc1eaf3d118e' AND commodity_id IS NULL AND lang_id IS NULL AND date < '2014-07-05 09:25' AND

我有两个问题。第一个将返回10行,第二个查询将返回2行。但是,当我将查询合并为一个查询时,它仍然只返回10行

以下是我的疑问

SELECT * 
FROM   contentmsg 
WHERE  apmc_id = '5284a327e4b0bc1eaf3d118e' 
       AND commodity_id IS NULL 
       AND lang_id IS NULL 
       AND date < '2014-07-05 09:25' 
       AND date >= '2014-06-13 14:17:22' 
ORDER  BY -date 
LIMIT  0, 10 
选择*
来自contentmsg
其中apmc_id='5284a327e4b0bc1eaf3d118e'
商品标识为空
并且lang_id为空
日期<'2014-07-05 09:25'
日期>='2014-06-13 14:17:22'
按日期订购
限制0,10
输出 两张唱片

SELECT * 
FROM   contentmsg 
WHERE  apmc_id = '5284a327e4b0bc1eaf3d118e' 
       AND commodity_id IN ( '5226d086e4b05917e5ca33bc', '5226d086e4b05917e5ca33b6', '5226d086e4b05917e5ca33d9', '5226d086e4b05917e5ca3408',
                             '5226d086e4b05917e5ca33e1', '5226d086e4b05917e5ca33ec', '5226d086e4b05917e5ca33b4' )
       AND lang_id = '51fb5a2ee4b0e18f7f89ecc8' 
       AND date < '2014-07-05 09:25' 
       AND date >= '2014-06-13 14:17:22' 
ORDER  BY date 
LIMIT  0, 10 
选择*
来自contentmsg
其中apmc_id='5284a327e4b0bc1eaf3d118e'
以及("5226d086e4b05917e5ca33bc","5226d086e4b05917e5ca33b6","5226d086e4b05917e5ca33d9","5226d086e4b05917e5ca3408",,
‘5226d086e4b05917e5ca33e1’、‘5226d086e4b05917e5ca33ec’、‘5226d086e4b05917e5ca33b4’)
而lang_id='51fb5a2ee4b0e18f7f89ecc8'
日期<'2014-07-05 09:25'
日期>='2014-06-13 14:17:22'
按日期订购
限制0,10
输出 10项记录

这些查询之间的唯一区别是,在第一个查询中,商品id设置为null,lang\u id设置为null

我尝试了这个查询,在其中添加了“或”

选择*
来自contentmsg
其中apmc_id='5284a327e4b0bc1eaf3d118e'
商品标识为空
或商品id位于('5226d086e4b05917e5ca33bc','5226d086e4b05917e5ca33b6','5226d086e4b05917e5ca33d9','5226d086e4b05917e5ca3408',',
‘5226d086e4b05917e5ca33e1’、‘5226d086e4b05917e5ca33ec’、‘5226d086e4b05917e5ca33b4’)
并且lang_id为空
或lang_id='51fb5a2ee4b0e18f7f89ecc8'
日期<'2014-07-05 09:25'
日期>='2014-06-13 14:17:22'
按日期订购
限制0,10

查询中是否有错误?

您需要注意with
&
运算符(
之前进行评估)。要解决此问题,请将操作括在括号中:

SELECT * 
FROM   contentmsg 
WHERE  apmc_id = '5284a327e4b0bc1eaf3d118e' 
       AND ( commodity_id IN ( '5226d086e4b05917e5ca33bc', '5226d086e4b05917e5ca33b6', '5226d086e4b05917e5ca33d9', '5226d086e4b05917e5ca3408',
                               '5226d086e4b05917e5ca33e1', '5226d086e4b05917e5ca33ec', '5226d086e4b05917e5ca33b4' )
             AND lang_id = '51fb5a2ee4b0e18f7f89ecc8' ) 
        OR ( commodity_id IS NULL 
             AND lang_id IS NULL ) 
           AND date < '2014-07-05 09:25' 
           AND date >= '2014-06-13 14:17:22' 
ORDER  BY -date 
选择*
来自contentmsg
其中apmc_id='5284a327e4b0bc1eaf3d118e'
和(商品id位于('5226d086e4b05917e5ca33bc'、'5226d086e4b05917e5ca33b6'、'5226d086e4b05917e5ca33d9'、'5226d086e4b05917e5ca3408',
‘5226d086e4b05917e5ca33e1’、‘5226d086e4b05917e5ca33ec’、‘5226d086e4b05917e5ca33b4’)
和lang_id='51fb5a2ee4b0e18f7f89ecc8')
或(商品标识为空)
并且lang_id为空)
日期<'2014-07-05 09:25'
日期>='2014-06-13 14:17:22'
按日期订购

查询返回的记录数没有区别。您的
LIMIT
子句将结果集限制为10行。我不认为
LIMIT 0,10
与此有关。哇。。完成。:)我真的很抱歉。输出正确,但两条记录在日期之后。。因此,在输出中,它不会出现。。谢谢一个朋友:)就我个人而言,我会在那里再放一组参数,并改变缩进,只是为了清晰起见,所以整个商品id/语言id概念都在它自己的小团体中,而且很明显ands和ors都是关于什么的。@JoeEnos。。谢谢你的信息。你能告诉我你想怎么做吗?所以它对我有用?@NizamAli我不想用我的格式编辑问题或答案,但基本上我所说的是混合和匹配and和or只是让你思考操作顺序。如果WHERE子句只包含AND或ORs,那么阅读起来就容易多了(当然是IMO)。因此这将是
,其中apmc\u id='x'和((商品id in()和lang\u id='x')或(商品id为null,lang\u id为null))和日期<'x'和日期>=x
。这些外部参数将垂直排列并表示单个条件,这样WHERE子句只包含and。
SELECT * 
FROM   contentmsg 
WHERE  apmc_id = '5284a327e4b0bc1eaf3d118e' 
       AND ( commodity_id IN ( '5226d086e4b05917e5ca33bc', '5226d086e4b05917e5ca33b6', '5226d086e4b05917e5ca33d9', '5226d086e4b05917e5ca3408',
                               '5226d086e4b05917e5ca33e1', '5226d086e4b05917e5ca33ec', '5226d086e4b05917e5ca33b4' )
             AND lang_id = '51fb5a2ee4b0e18f7f89ecc8' ) 
        OR ( commodity_id IS NULL 
             AND lang_id IS NULL ) 
           AND date < '2014-07-05 09:25' 
           AND date >= '2014-06-13 14:17:22' 
ORDER  BY -date