帮问,关于MS SQL的一个问题(50分)

  • 主题发起人 主题发起人 wp231957
  • 开始时间 开始时间
W

wp231957

Unregistered / Unconfirmed
GUEST, unregistred user!
在以下查詢語句中,ttdsls101090.t_qono = ttipcs020090.t_qono = ttttxt010090.t_qono,t_seak, t_refe, t_text三個字段各不相同。
用Union函數將三個表中的兩個字段進行合並:

select
t_qono as 字段一,
t_seak as 字段二
From
ttdsls101090

union all

select
t_qono,
t_refe
From
ttipcs020090

union all

select
t_qono,
t_text
From
ttttxt010090

其查詢結果的排序方式應為:
字段一 字段二
t_qono t_seak
t_qono t_refe
t_qono t_text

但是,根據t_seak, t_refe, t_text三個字段的值不同,會對以上語句的結果進行自行排序,從而顛倒了t_seak, t_refe, t_text三個字段的顯示順序。
目前我想讓t_seak, t_refe, t_text三個字段的顯示順序按照Union聯合的三個查詢語句的順序來顯示。

請問,我該如果操作?!
 
Select t_qono,字段二 From
(
select A=1,t_qono,t_seak 字段二
From ttdsls101090
union all
select A=2,t_qono,t_refe 字段二
From ttipcs020090
union all
select A=3,t_qono,t_text 字段二
From ttttxt010090
) A
Order By A,字段二
 
SQL我是新手,這段語句看不明白。

Select t_qono,字段二 From
(
select A=1,t_qono,t_seak 字段二
From ttdsls101090
union all
select A=2,t_qono,t_refe 字段二
From ttipcs020090
union all
select A=3,t_qono,t_text 字段二
From ttttxt010090
) A
Order By A,字段二

根據我理解,上述語句將三個表的聯合查詢作為子查詢,並對子查詢內的兩個字段進行排序。
疑點有三:

一、“Order By A,字段二”是不是應該放在子查詢內部?
二、“select A=1,select A=2,select A=3,語句”,應該只是指定字段的別名。
三、Order排序只是對字段的值進行排序,似乎無法對字段名稱排序。
 
一、“Order By A,字段二”是不是應該放在子查詢內部?
是对3个union all 后的记录集进行排序,放在外部
Select t_qono,字段二 From
(
...
)
Order By A
只是对3个union all进行排序
二、“select A=1,select A=2,select A=3,語句”,應該只是指定字段的別名。
字段A=1,对应t_seak
字段A=2,对应t_refe
字段A=3,对应t_text
对A Order 就是对t_seak/t_refe/t_text进行排序,
三、Order排序只是對字段的值進行排序,似乎無法對字段名稱排序。
不知道我没理解清楚,还是你说的不明白,
为什么要对字段名称排序,字段名称怎样排序?(字段名union之后就是一个字段吧)
 
我觉得楼主点想法是,在查询的结果中,想让那三个字段t_seak, t_refe, t_text的值按照固定的顺序循环,一般情况下,它是按照默认的顺序,如果你想按照你期望的顺序,那就在select后面加个字段,专门用来排序就是了,1,2,3三个值就够用了。
 
后退
顶部