代码之家  ›  专栏  ›  技术社区  ›  codingbbq

mysql查询以选择一个特定行和另一个随机行

  •  6
  • codingbbq  · 技术社区  · 15 年前

    我想展示两张唱片。

    对于eg select * FROM users WHERE user_id = 5 .

    是否可以在一个查询中完成。我试过使用union,但没有得到两个不同的行。

    谢谢

    4 回复  |  直到 15 年前
        1
  •  7
  •   Pekka    15 年前

    这对我很有用。第一个结果总是ID为5的记录,第二行是随机的。注意,如果不存在ID为5的记录,则这两行都是随机的。

    SELECT * FROM users ORDER BY (user_id = 5) DESC, RAND() LIMIT 0,2 
    
        2
  •  0
  •   Alberto Zaccagni    15 年前

    试试这个

    SELECT * FROM users WHERE user_id = 5 || user_id != 5 ORDER BY RAND() LIMIT 2
    
        3
  •  0
  •   jwueller    15 年前

    应该 玩把戏吧。你可能忘了 LIMIT .

    (SELECT * FROM users WHERE user_id = 5 LIMIT 1)
    UNION
    (SELECT * FROM users WHERE user_id != 5 LIMIT 1)
    
        4
  •  0
  •   Dewfy    15 年前

    SELECT * FROM users WHERE user_id=5
    union all (
      SELECT * FROM  users WHERE user_id!=5
      ORDER BY RAND() LIMIT 0,1)