如何根据列值对SQL表进行排序?

时间:2015-07-23 10:00:42

标签: sql sorting

我有两张桌子

Name  |  Age
------------
a     |   20
b     |   15


Name  | Age(varchar)
------------------
e     |  two
d     |   one

然后我要显示

Name   | Age
-----------
b      |  15
a      |  20
e      |  two
d      | one

怎么样?

3 个答案:

答案 0 :(得分:1)

这可以通过Age操作来完成, 但这些表的union all列的数据类型似乎不同。

因此,如果您尝试Conversion failed when converting the varchar value 'two' to data type int 这些表格,则会收到错误消息;

age

因此,在table 1之前将varchar union列的数据类型转换为select id, age from ( select id, convert(varchar(20), age) as age from tbl1 union all select id, age from tbl2 ) as x order by age

union all

如果您对重复数据使用正常,则使用union其他unionorder by age会有额外的删除重复数据的开销)

注意:lexicographically订单年龄{{1}}

答案 1 :(得分:0)

如@Matt在评论中所述,这看起来好像你想要执行UNION查询,请参阅msdn以获取有关执行UNION查询的说明。

SELECT *
FROM Table1
UNION
SELECT *
FROM Table2

修改:如果您想订购结果,则只需在查询中添加ORDER BY关键字。

SELECT *
FROM Table1
UNION
SELECT *
FROM Table2
ORDER BY Name

答案 2 :(得分:0)

SELECT *
FROM Table1
UNION
SELECT *
FROM Table2
ORDER BY Name, Age;