目前我从2个表中选择了这个:
(SELECT e.id, e.num, '1' as TBL
FROM events e
)
UNION ALL
(SELECT p.id, p.num, '2' as TBL
FROM places p
)
ORDER BY 2 DESC
它返回num
排序的值,如下所示:
id | num | TBL
3 | 9 | 2
1 | 8 | 2
4 | 7 | 1
1 | 4 | 1
7 | 1 | 2
但我的目标是在选择中混合表而不会丢失特定表中的ORDER
。像这样:
id | num | TBL
3 | 9 | 2
4 | 7 | 1
1 | 8 | 2
1 | 4 | 1
7 | 1 | 2
提前致谢!我感谢任何帮助!
答案 0 :(得分:2)
如果要交错表格,则需要其他信息。如果枚举每一行,则可以使用它进行排序。像这样:
(SELECT e.id, e.num, '1' as TBL, (@rn1 := @rn1 + 1) as rn
FROM events e CROSS JOIN
(SELECT @rn1 := 0) vars
ORDER BY e.num desc
)
UNION ALL
(SELECT p.id, p.num, '2' as TBL, (@rn2 := @rn2 + 1) as rn
FROM places p CROSS JOIN
(SELECT @rn2 := 0) vars
ORDER BY p.num desc
)
ORDER BY rn, tbl desc;
答案 1 :(得分:0)
试试这个:
DECLARE @t TABLE (rn INT IDENTITY,id INT,TBL INT)
INSERT INTO @t (id, TBL) SELECT id,1 FROM events INSERT INTO @t SELECT id,2 FROM places
DECLARE @t2 TABLE (rn INT IDENTITY,num numeric(18,2))
INSERT INTO @t2 (num) ( SELECT num FROM events UNION ALL SELECT num FROM places) ORDER BY num DESC
SELECT id, num, TBL FROM @t a JOIN @t2 b ON a.rn = b.rn