Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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 如何将SQL数据与或条件混合_Mysql_Sql - Fatal编程技术网

Mysql 如何将SQL数据与或条件混合

Mysql 如何将SQL数据与或条件混合,mysql,sql,Mysql,Sql,我有一个SQL查询,返回1月1日至12月31日之间的2个post_类型: $url=当前日期(例如2017年) 我的查询有效,但结果是第一辆车和第二辆摩托车 我想先按post\u日期混用数据,而不是按post\u类型混用数据 有什么想法吗 编辑: 当前结果: Car | January Car | February Car | April [...] Car | July Car | August Motorbike | January Motorbike | March Motorbike |

我有一个SQL查询,返回1月1日至12月31日之间的2个post_类型:

$url=当前日期(例如2017年)

我的查询有效,但结果是第一辆车和第二辆摩托车

我想先按
post\u日期混用数据,而不是按
post\u类型混用数据

有什么想法吗

编辑:

当前结果:

Car | January
Car | February
Car | April
[...]
Car | July
Car | August
Motorbike | January
Motorbike | March
Motorbike | May
Motorbike | June
[...]  
我想要的是:

Car | January
Motorbike | January
Car | February
Motorbike | March
Car | April
Motorbike | May
Motorbike | June
Motorbike | July
Car | August
[...]

带有“月”的示例,但格式日期为2017-12-31,不清楚您想做什么。但如果您想先按
car
的邮政类型订购,则可以按如下顺序使用
CASE
表达式:

...
ORDER BY CASE WHEN post_type = 'car' THEN 0 ELSE 1 END, 'post-date'
演示:

使用IN-vs或

SELECT * 
FROM posts 
WHERE `post_date` 
BETWEEN '2017-01-01' 
  AND '2017-12-31' 
  AND post_status = 'publish' 
  AND post_type in ('car', 'motorbike')
ORDER BY post_date desc;  
或者只需确保order by语法正确即可

SELECT * 
FROM `posts` 
WHERE `post_date` 
BETWEEN '".$url."-01-01' 
AND '".$url."-12-31' 
AND post_status = 'publish' 
AND post_type = 'car' 
OR `post_date` 
BETWEEN '".$url."-01-01' 
AND '".$url."-12-31' 
AND post_status = 'publish' 
AND post_type = 'motorbike' 
ORDER BY `post_date`

确保发布日期正确,顺序为
post\u date
vs'post date'

这个怎么样

ORDER BY post_date asc,post_type asc


OP明确提到我想先按发布日期而不是发布类型混合数据。这并没有解决我的问题。现在,它们不是按日期订购的。@MKhalidJunaid基于他所说的
但结果返回汽车第一和第二辆摩托车。
我假设他想要控制订单。@Reitrac您的问题到底是什么?你能添加一些样本数据和所需的输出吗???@MartinHoratio我只想按日期混合数据:)你能显示样本输出吗只需更新你的订单,因为按日期排序就可以了。因此,获得第一个结果的唯一方法是,如果所有汽车帖子的日期早于摩托车的所有日期。如果不是这样的话。然后给我们一些样本数据/记录,以便我们自己看到问题。目前,我们无法重新创建您的问题。如果我没有错,这将被视为字符串文字not列,因此您需要按日期列排序,日期列是post\U date not
'post-date'
此:
'post-date'“
应该是这样的:
post\u date
将撇号改为back ticks,将减号/连字符改为下划线
-
相同的问题,数据不混合(第一辆车和第二辆摩托车)我认为你的帖子是这样创建的,所有前n个记录都是汽车,其余x个记录都是摩托车,这就是为什么你先得到汽车,然后是摩托车,尽管你是按顺序订购记录的_date@xQbert是的,我试过使用
post\u date
,但没有任何变化。您是否删除了它周围的撇号?背蜱是好的撇号不是。演示:@xQbert你能从表中显示post_日期、post_类型的输出吗?请告诉我post_日期是否为字符串/日期类型?好主意,但它们不是混合的。。。我不知道为什么这么简单的事情会变得这么简单complicated@reitrac他们怎么不混在一起?演示演示了如何混合。所以你有一些不同于我的东西:在数据或SQL中。我去掉撇号,它工作得很好!非常感谢+10OP SQL最突出的问题是ORDER BY子句中的表达式。单引号计算为字符串文字。@spencer7593是的,我不敢相信我一开始就漏掉了它。SO中的颜色编码完全是免费的。
ORDER BY post_date asc,post_type asc