[英]Doctrine where Query- Logical order - Where(condition1 and [condition2 or condition3])
[英]Order by where condition
我有以下查詢:
select `state` from `table1`
where `state` in ('NC','North Carolina','TN','Tennessee','CO','Colorado','NM','New Mexico','UT','Utah')
limit 200 offset 0
我需要state
排序的結果,因為它們出現在我的where
子句中(即第一個NC
,然后是TN
,然后是CO
,依此類推)。
我怎樣才能做到這一點? 我嘗試使用order by
但它沒有給出這個結果。
你可以使用ORDER BY FIELD
SELECT `state`
FROM `table1`
WHERE `state` IN ('NC','North Carolina','TN','Tennessee','CO','Colorado','NM','New Mexico','UT','Utah')
ORDER BY FIELD(`state`, 'NC','North Carolina','TN','Tennessee','CO','Colorado','NM','New Mexico','UT','Utah');
SELECT col_name
FROM table_nane
WHERE col_nane IN ('NC','North Carolina','TN','Tennessee','CO','Colorado','NM','New Mexico','UT','Utah')
ORDER BY FIELD(`state`, 'NC',.....);
等等....
嘗試這個:
order by case when `state`='NC' or `state`='North Carolina' then 1
when `state`='TN' or `state`='Tennessee' then 2
when `state`='CO' or `state`='Colorado' then 3
end
您可以將ORDER BY
與CASE WHEN
結構組合使用:
ORDER BY CASE
WHEN state = 'NC' THEN 1
WHEN state = 'North Carolina' THEN 2
...
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.