插入后按字母顺序排序行(不按顺序排序)

时间:2014-09-29 21:15:14

标签: triggers insert alphabetical

我需要一些建议,在每次插入后按字母顺序排序。

Example:
Table COUNTRIES
ID 1, name 'Germany'
ID 2, name 'Bahamas'
ID 3, name 'Algeria'

Afterwards:
ID 1, name 'Algeria'
ID 2, name 'Bahamas'
ID 3, name 'Germany'

有关如何实现这一点的任何想法?谢谢。

PD:在ORDER BY语句中使用的SELECT只会排序" aesthetical"目的,真正的行没有任何顺序。

1 个答案:

答案 0 :(得分:0)

最后,我在http://sqlteam.com找到了这个问题的答案。

也许它会帮助其他一些用户。

CREATE TRIGGER ORDER_COUNTRIES
AFTER INSERT
ON COUNTRIES
AS 
BEGIN
    UPDATE COUNTRIES
    SET name = Table3.name
    FROM Prueba Table1
    JOIN (SELECT ID, seq = ROW_NUMBER() OVER (ORDER BY ID) FROM COUNTRIES) Table2
    ON Table1.ID = Table2.ID
    JOIN (SELECT name, seq = ROW_NUMBER() OVER (ORDER BY name) FROM COUNTRIES) Table3
    ON Table2.seq = Table3.seq
END

Result:                                                                                                                            

ID 1, name 'Algeria'
ID 2, name 'Bahamas'
ID 3, name 'Germany'                                                                     

现在每次插入后表都会正确排序。因此,如果SELECT使用ORDER BY或不使用{{1}},则表格将始终按字母顺序排列。

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=160974处找到用户的答案 " nigelrivett&#34 ;.所有的功劳归于他。