2010-01-20 62 views
1

這似乎是可能的,但同時我想知道它是否可行。從表格中選擇5行,但只有一行是特別指定的

我有一張{users}表。我想從該表中拉出5行,但同時我想指定一行。

最近的sql語句我得到的是:

SELECT 
    u.id, u.full_name, u2.id, u2.full_name 
FROM 
    users u 
JOIN 
    users u2 ON u2.id != 872 
WHERE 
    u.id = 872 
LIMIT 4 

我知道我可以做這兩個SQL語句,但我想嘗試,只有做一個。

謝謝

Jason246

+0

你能解釋一下,你需要這個場景?聽起來有點有趣。 – naivists 2010-01-20 13:18:14

+0

naivists 我想比較指定的行與其他4個隨機行。 – Jason246 2010-01-20 13:27:20

回答

2
SELECT * 
FROM users 
ORDER BY 
     u.id = 872 DESC, RANDOM() 
LIMIT 5 

更有效,但是,將使它在UNION

SELECT * 
FROM users 
WHERE id = 872 
UNION ALL 
SELECT * 
FROM (
     SELECT * 
     FROM user 
     WHERE id <> 872 
     LIMIT 4 
     ) q 
+0

太棒了,非常感謝你Quassnoi! – Jason246 2010-01-20 13:28:09