从表中选择5行,但是具体指定了一行

时间:2010-01-20 13:15:33

标签: sql postgresql

这似乎有可能,但与此同时我想知道它是否真的可能。

我有一个表{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

1 个答案:

答案 0 :(得分: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