我该如何编写此查询

时间:2015-02-18 20:41:48

标签: mysql

我有这张桌子:

id user_id titel

1   user_id1   a
2   user_id2   b
3   user_id1   c
4   user_id3   d
5   user_id1   e
6   user_id2   f
7   user_id4   g
8   user_id3   h
9   user_id1   j
10  user_id1   i

我需要选择5个第一个标题,它们没有user_id3并按id ASC排序,在表格的末尾添加所有它们都有user_id3。

结果:

user_id1   a
user_id2   b
user_id1   c
user_id1   e
user_id2   f
user_id3   d
user_id3   h

2 个答案:

答案 0 :(得分:0)

SELECT * FROM table WHERE user_id!='user_id3' ORDER BY id LIMIT 5
UNION ALL
SELECT * FROM table WHERE user_id='user_id3'

答案 1 :(得分:0)

像这样:

SELECT * from mytable WHERE user_id!='user_id3'
UNION SELECT * FROM mytable WHERE user_id='user_id3'
ORDER BY IF(user_id='user_id3', 1, 0) ASC,  id ASC

请注意,order by必须位于查询的末尾,因此您必须使用此类提示来执行您想要的操作。如果您假设您的id已经排序(不需要删除),您可以删除整行,因为union在第一个请求结果之后添加第二个请求结果。