SQL排序语句

T1 表有 A B C D 4个字段,分别存 1 3 2 4 ,3 2 4 1,4 3 1 2
现在想得到第五个字段为 A B C D 的冒泡排序数:1234
结果变为 1 3 2 4 1234,3 2 4 1 1234,4 3 1 2 1234
谢谢大牛们!
就是用 SQL 做个冒泡排序,只有四个数,可不可以用其它方法?
非常感谢.

你的写法是错误的,按照你的写法在对n进行降序排序时,第一个m升序排序结果会失效,等于最终只读n做了降序排序,而且你的语句本身也比较冗余。

正确的写法是:

SELECT * FROM a ORDER BY m ASC ,n DESC;

我们可以通过一些实例来具体分析order by 子句的用法:

假设有Orders 表:

1、实例 1

以字母顺序显示公司名称:

SELECT Company, OrderNumber FROM Orders ORDER BY Company

结果如下:

2、实例 2

以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

结果如下:

3、实例 3

以逆字母顺序显示公司名称:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

结果如下:

4、实例 4

以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

结果如下:

注意:在以上的结果中有两个相等的公司名称 (W3School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-15
select * from table1 ORDER BY field1, field2追问

这是以 A B 列排序.
我是想得到一个新字段,字段的内容是 A B C D 以排序组成的

第2个回答  2013-09-15
在结尾加上order by T.ID追问

谢谢你这么快回答.

order by T.ID是列排序吧,行应该是冒泡,但怎么做,请高手帮忙.

谢谢

第3个回答  2013-09-15
CREATE FUNCTION [dbo].[f_getCombinedNumber]
(
@num1 INT ,
@num2 INT ,
@num3 INT ,
@num4 INT
)
RETURNS INT
AS
BEGIN
DECLARE @result INT
DECLARE @temp VARCHAR(50)= ''

DECLARE @TempTable TABLE ( num INT )
INSERT INTO @TempTable
VALUES ( @num1 ),
( @num2 ),
( @num3 ),
( @num4 )

SELECT @temp = @temp + CAST(num AS VARCHAR)
FROM @TempTable
ORDER BY num
SET @result = CAST(@temp AS INT)
RETURN @result
END
GO
SELECT A ,
b ,
c ,
d ,
dbo.f_getCombinedNumber(a, b, c, d)
FROM dbo.T1追问

很感谢,不过看不太懂.这应该是 C 语言操作 SQL吧.
我希望用纯的 SQL. 在ACCESS 数据据上操作

希望能再详细讲一下,谢谢

你是做了一个 存储过程吧,不用存储过程直接写行吗. ACCESS里面操作,复制你的代码通不过.
谢谢

追答

我的就是纯sql语句,不过是用在sql server数据库中的,首先我create funtion 建立了一个sql中的方法,作用是返回第五个字段值,go 以及上面的都是这个方法,
SELECT A ,
b ,
c ,
d ,
dbo.f_getCombinedNumber(a, b, c, d)
FROM dbo.T1
这个就是查询结果了

追问

谢谢,明白. 但ACCESS 里面用不了...

能不能做一个循环 ,比如 CASE WHEN 或者什么,用比较结果来做. 类似冒泡排序那样的.或者用多层SELECT

非常感谢,

本回答被提问者和网友采纳