Mysql 如何将SQL数据与或条件混合
我有一个SQL查询,返回1月1日至12月31日之间的2个post_类型: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 |
$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