当我问它时,这听起来像个愚蠢的问题,但我是SQL的新手,不确定这样的事情是否可行。
我想从表中选择除2之外的所有记录,按字母顺序排序,然后将最后两个追加到末尾。我可以在select语句中执行此操作,还是必须创建临时表并从中返回结果集?
基本上,在伪代码中,我想这样做:
select
firstname,
lastname,
otherdata
from People
where firstname != 'john' or 'mark'
order by firstname
add John and Mark
提前致谢。
答案 0 :(得分:4)
不,您需要使用UNION
来组合查询,ORDER BY
必须最后。 e.g。
SELECT firstname, lastname, otherdata
FROM dbo.People
WHERE firstname NOT IN ('john', 'mark')
UNION ALL
SELECT 'John', NULL, NULL
UNION ALL
SELECT 'Mark', NULL, NULL
ORDER BY firstname;
如果您打算将这两行放在最后,那么您还需要其他东西来订购,例如
SELECT firstname, lastname, otherdata, z = 1
FROM dbo.People
WHERE firstname NOT IN ('john', 'mark')
UNION ALL
SELECT 'John', NULL, NULL, z = 2
UNION ALL
SELECT 'Mark', NULL, NULL, z = 3
ORDER BY z, firstname;
您可能会看到可爱的技巧,人们会将查询放在子查询中并在那里应用订单(在TOP
的帮助下),但要注意,这是一个诡计!这不保证外部查询的排序方式。