[請益] 請教關於select in的sql語法

看板PHP作者 (別急著吃棉花糖)時間12年前 (2013/06/05 18:38), 編輯推噓3(3011)
留言14則, 3人參與, 最新討論串1/1
因在question資料表裡有2個欄位 qid question ----------------- 1 題目1 2 題目2 3 題目3 我想要隨機出現2題的題目並依照qid編號由小到大來排順序 請問這樣的sql語法該怎麼寫呢? 有詢問過版上一位前輩,他的回答 select * from question where qid in (select qid from question order by rand()) order by qid asc limit 2 這樣都是固定前2筆出現,而無法隨機 一直跑不出要的結果 請問該怎麼寫這個sql語法呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.17.131.249

06/05 18:58, , 1F
select * from (select qid from question order by
06/05 18:58, 1F

06/05 18:59, , 2F
上面打到一半發現錯了 更正一下
06/05 18:59, 2F

06/05 19:01, , 3F
select * from (select * from question order by
06/05 19:01, 3F

06/05 19:02, , 4F
rand() limit 2) as a order by a.qid asc
06/05 19:02, 4F

06/05 19:03, , 5F
先隨機取前兩筆然後在照qid排序
06/05 19:03, 5F

06/05 19:14, , 6F
太感謝w前輩,但這個雙重select真的有點複雜
06/05 19:14, 6F

06/05 19:15, , 7F
使用in不行,一定得要用這個。冏..
06/05 19:15, 7F

06/05 19:37, , 8F
剛沒仔細看 你原本的用法也是可以的 limit放進括弧內
06/05 19:37, 8F

06/05 19:37, , 9F
應該也可以達成你的目的
06/05 19:37, 9F

06/05 19:39, , 10F
你原本的sql ()內已經將qid打亂了 但是最外層又重新排序
06/05 19:39, 10F

06/05 19:39, , 11F
所以才會只跑出固定的前兩筆
06/05 19:39, 11F

06/05 20:13, , 12F
抱歉,W大,我把limit 2放進select子()裡,是無法執行的
06/05 20:13, 12F

06/05 20:17, , 13F
@@ 抱歉 是我弄錯了
06/05 20:17, 13F

06/08 10:57, , 14F
SELECT * FROM question ORDER BY RAND() LIMIT 0,2
06/08 10:57, 14F
文章代碼(AID): #1HhnL2KZ (PHP)
文章代碼(AID): #1HhnL2KZ (PHP)