假設我有一個數據庫,表中包含ide從1到20的行。mysql - 按字段順序無法正常工作
我想返回3行與ID 3,4,1第一,然後返回其他行。這是我的代碼:
SELECT id
FROM prod
ORDER BY field(id, 3, 4, 1)
LIMIT 20
這是該代碼的結果:
id
13
17
16
15
7
6
5
2
3
4
1
奇怪了3行,我需要先來都出現在年底,
我怎麼能把這3行放到列表的頂部?
感謝
假設我有一個數據庫,表中包含ide從1到20的行。mysql - 按字段順序無法正常工作
我想返回3行與ID 3,4,1第一,然後返回其他行。這是我的代碼:
SELECT id
FROM prod
ORDER BY field(id, 3, 4, 1)
LIMIT 20
這是該代碼的結果:
id
13
17
16
15
7
6
5
2
3
4
1
奇怪了3行,我需要先來都出現在年底,
我怎麼能把這3行放到列表的頂部?
感謝
您可以使用desc
:
SELECT id
FROM prod
ORDER BY field(id, 3, 4, 1) DESC
LIMIT 20
問題是MySQL把NULL
值首先當你用升序。
如果你真的想要的順序排3,4,1(問題是模糊的這個要求),然後反轉他們在field
聲明:
SELECT id
FROM prod
ORDER BY field(id, 1, 4, 3) DESC
LIMIT 20
或者,如果你想是看中:
ORDER BY - field(id, 3, 4, 1) DESC
嘗試用DESC
SELECT id
FROM prod
ORDER BY field(id, 3, 4, 1) DESC
LIMIT 20
它看ms你的id命令很重要。反向號碼以獲得正確的結果
SELECT id
FROM prod
ORDER BY field(id, 1, 4, 3) DESC
LIMIT 20
另一種方法是使用case-when
,並給每個id
的order value
select * from prod
order by
case
when id = 3 then 0
when id=4 then 1
when id=1 then 2
else 3
end,id
limit 20
;
未經測試,但你可以嘗試
SELECT id,
(
CASE
WHEN id = '3' THEN 0
WHEN id = '4' THEN 1
WHEN id = '1' THEN 2
END
) as rank
FROM prod
ORDER BY rank
LIMIT 20;
@sgtBOSE。 。 。我不確定評論應該是什麼。這將三行放在列表的頂部,這是OP要求的。 –
解決方案現在在場。 :) –