我知道我可以使用ORDER BY
对一列数据进行排序,但是我想使用ORDER BY
对两列进行排序并将结果显示在一个表视图中。
我尝试使用逗号分隔的列表,但这并没有达到我想要的方式。我希望它对两列进行排序,而与行必须位于特定位置无关。
SELECT * FROM top_5_films ORDER BY position DESC;
我希望对两列数据都进行排序,并且不希望将字段绑定到行上。
答案 0 :(得分:0)
正如@forpas所评论的那样,您似乎正在寻找创建不相关数据的记录。这在SQL中是一个很奇怪的要求...
假设您的RDBMS支持窗口功能ROW_NUMBER()
,则可以执行以下操作:
JOIN
分别查询两个子行的行号考虑:
SELECT c1.col1, c2.col2
FROM
(
SELECT col1, ROW_NUMBER() OVER(ORDER BY col1) rn FROM top_5_films
) c1
INNER JOIN (
SELECT col2, ROW_NUMBER() OVER(ORDER BY col2) rn FROM top_5_films
) c2 ON c1.rn = c2.rn
ORDER BY c1.rn
样本数据:
| col1 | col2 |
| ---- | ---- |
| ghi | RST |
| abc | UVW |
| lmn | OPQ |
结果:
| col1 | col2 |
| ---- | ---- |
| abc | OPQ |
| ghi | RST |
| lmn | UVW |