2015-10-26 63 views
1

试图让所有行其中userid = '我'简单的SQL联盟2个查询在同一个表

然后2名最新行其中userid <> '我'

项目:

 
Userid time 
other2 11 
other3 10 
me  10 
me  8 
other1 8 
other3 7 
me  6 

将返回

 
Userid time 
me  10 
me   8 
me   6 
other2 11 
other3 10 

结果不必为b E在任何顺序

(SELECT * FROM Items WHERE userid='me') 
UNION ALL 
(SELECT * FROM Items WHERE userid<>'me' 
ORDER BY time DESC LIMIT 2) 

这仅输出2行

+0

SQL-Server或MySQL? –

+3

您的查询看起来正确。使用'limit'建议MySQL,所以我删除了SQL Server标记。 –

+1

我同意@GordonLinoff。看到[小提琴](http://sqlfiddle.com/#!9/ca405/1/0)。 –

回答

2

如上所示

(SELECT * FROM Items WHERE userid='me') 
UNION ALL 
(SELECT * FROM Items WHERE userid<>'me' 
ORDER BY time DESC LIMIT 2) 

UNION ALL地连接了两个查询,并且括号允许不同WHERE /订购SQL是正确的BY/LIMIT子句。
此处演示: http://sqlfiddle.com/#!9/ca405/1/0