作者stator (別急著吃棉花糖)
看板PHP
標題[請益] 請教關於select in的sql語法
時間Wed Jun 5 18:38:55 2013
因在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
1F:推 water2924:select * from (select qid from question order by 06/05 18:58
2F:→ water2924:上面打到一半發現錯了 更正一下 06/05 18:59
3F:→ water2924:select * from (select * from question order by 06/05 19:01
4F:→ water2924:rand() limit 2) as a order by a.qid asc 06/05 19:02
5F:→ water2924:先隨機取前兩筆然後在照qid排序 06/05 19:03
6F:→ stator:太感謝w前輩,但這個雙重select真的有點複雜 06/05 19:14
7F:→ stator:使用in不行,一定得要用這個。冏.. 06/05 19:15
8F:推 water2924:剛沒仔細看 你原本的用法也是可以的 limit放進括弧內 06/05 19:37
9F:→ water2924:應該也可以達成你的目的 06/05 19:37
10F:→ water2924:你原本的sql ()內已經將qid打亂了 但是最外層又重新排序 06/05 19:39
11F:→ water2924:所以才會只跑出固定的前兩筆 06/05 19:39
12F:→ stator:抱歉,W大,我把limit 2放進select子()裡,是無法執行的 06/05 20:13
13F:推 water2924:@@ 抱歉 是我弄錯了 06/05 20:17
14F:→ averywu:SELECT * FROM question ORDER BY RAND() LIMIT 0,2 06/08 10:57