2012-07-09 23 views

回答

0

我想這將是

(SELECT * from users limit 39) 
UNION ALL 
(SELECT * from users where userid='your-user-id') 
+0

這隻會選擇具有該ID的用戶 – 2012-07-09 08:33:33

+0

因此,「總是在該列表中檢索一個用戶」。這不意味着這種方式?這意味着其他39個用戶(other-user-id)+ 1個特定用戶id-always-there? – sel 2012-07-09 08:35:56

+0

我相信OP希望選擇40個用戶,並且始終將特定用戶作爲該選擇的一部分。此查詢將只會選擇具有指定ID – 2012-07-09 08:37:44

0
Select * from table order by userd_id limit 40 
5

我能想到的最好的辦法是:

SELECT * FROM tbl WHERE userid='your-user-id' UNION SELECT * FROM tbl WHERE userid!='your-user-id' LIMIT 39 

基本上,您選擇您的用戶,然後選擇其他39個用戶。您使用UNION結合兩個SELECT結果。

1
SELECT 
    * 
FROM 
    `users` 
WHERE 
    `user_id` != 12345 
LIMIT 39 
UNION SELECT 
    * 
FROM 
    `users` 
WHERE 
    `user_id` = 12345 
ORDER BY `user_id` 
; 

這會給你第39個用戶和user_id = 12345的用戶。

+1

如果'user_id = 12345'在前39行中,這樣就會冒風險39行... – DaveRandom 2012-07-09 08:48:24

+0

@DaveRandom你說得對!我現在改變了它。謝謝 :) – Zagor23 2012-07-09 08:52:00

0

由於大部分的選項都已經提供,檢查這可以幫助你

select name from user_details where id = user_id || id != user_id order by field (id,user_id) desc limit 40; 

這會給你,如果你希望你指定的用戶ID將總是在最前面結果相結合&。