亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

想問這樣做的原理是什么?

想問這樣做的原理是什么?

忽然笑 2023-04-16 21:17:26
例:select * from list ORDER BY INSTR('4,2,3,1',lid);以及比較常見的和 IN 配合使用:SELECT * FROM EVENT WHERE eventId IN(443,419,431,440,420,414,509)  ORDER BY INSTR(',443,419,431,440,420,414,509,',CONCAT(',',eventId,','))
查看完整描述

2 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

首先INSTR(str, substr)是返回substr在str中的位置,若不存在,則返回0。
select * from list ORDER BY INSTR('4,2,3,1',lid);
使用ORDER BY INSTR時,如果lid不存在'4,2,3,1'中,則返回0,order by默認按遞增排序,所以lid為4,2,3,1的會放到最后。
SELECT * FROM EVENT WHERE eventId IN(443,419,431,440,420,414,509) ORDER BY INSTR(',443,419,431,440,420,414,509,',CONCAT(',',eventId,','))
mysql> select INSTR(',443,419,431,440,420,414,509,',CONCAT(',',443,','));
+------------------------------------------------------------+
| INSTR(',443,419,431,440,420,414,509,',CONCAT(',',443,',')) |
+------------------------------------------------------------+
| 1 |
+------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select INSTR(',443,419,431,440,420,414,509,',CONCAT(',',419,','));
+------------------------------------------------------------+
| INSTR(',443,419,431,440,420,414,509,',CONCAT(',',419,',')) |
+------------------------------------------------------------+
| 5 |
+------------------------------------------------------------+


查看完整回答
反對 回復 2023-04-20
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

order by只是一個子句,instr是一個內部函數,用在你所列舉的例子中完全是作為order by子句的clause,語法上就是這么定義的,如果clause是表達式,先計算表達式,再根據表達式結果來執行order by.

查看完整回答
反對 回復 2023-04-20
  • 2 回答
  • 0 關注
  • 226 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號