MYSQL按大小写顺序、列顺序
对不起英语 我的数据库中有一个名为“order_news”的专栏,我正试图按照顺序显示数据 示例数据:MYSQL按大小写顺序、列顺序,mysql,laravel,Mysql,Laravel,对不起英语 我的数据库中有一个名为“order_news”的专栏,我正试图按照顺序显示数据 示例数据: ------------------------ id | title | order_news ------------------------- 1 | news 1 | 0 -------------------------- 2 | news 2 | 1 -------------------------- 3 | news 3 | 2 ------------
------------------------
id | title | order_news
-------------------------
1 | news 1 | 0
--------------------------
2 | news 2 | 1
--------------------------
3 | news 3 | 2
---------------------------
4 | news 4 | 3
-------------------------
我的代码,我正在使用Laravel:
News::orderByRaw(
"
CASE
WHEN order_news = 1 THEN 1
WHEN order_news = 2 THEN 2
WHEN order_news = 3 THEN 3
WHEN order_news = 0 THEN 1
WHEN order_news = 0 THEN 2
WHEN order_news = 0 THEN 3
END
DESC,
created_at DESC
"
)
->take(3)
->get();
嗯。如果位置1、2、3不存在。位置0占据丢失的位置
例如:
你能帮我吗?tnx.作为一个起点,在相同条件下(
当order\u news=0时…
)具有多个的案例没有多大意义;其中只有一个将被使用
事实上,当order\u news=0时…
表达式是导致此问题的原因。当您检索标题为snews 2
、news 3
和news 1
的项目时,您会得到以下信息:
title order_news your order clause your order value
news 2 1 WHEN order_news = 1 THEN 1 1
news 3 2 WHEN order_news = 2 THEN 2 2
news 1 0 WHEN order_news = 0 THEN 1 1
因为news 2
和news 1
获得相同的顺序值(1
),它们都位于news 3
之前。因此,您得到的是order\u news
值1-0-2
,而不是1-2-0
你的问题并不清楚你到底想要什么,但很明显,你目前的案例陈述无法让你达到目的。为了避免这种情况,只需按新闻的顺序排列,或者根本不设置明确的顺序。您当前的案例
语句已经一团糟,无法扩展。请发布您的整个查询和一些示例数据。很难说出你在问什么。请重新表述你的问题,提供一些示例数据和预期输出。@EdCottrell我已经编辑了一些,现在你明白了吗?