今天為了實現乙個很原始的問題上網查資料,見到乙個很有意思的sql語句,和大家分享一下
要實現的sql查詢很原始:
要求從第乙個表進行查詢得到第二個**式的資料,上網查詢之後竟然能寫出下面的sql:
select現將sql進行一下分析:*from userino
select
*from(
select
[usernames]=
replace(replace(replace((select username as value from userino n
where userpart = a.userpart order
by n.username asc
for xml auto),'
"/>','/')
,'',''),'
"/>
[username_cns]=
replace(replace(replace((select username_cn as value from userino m
where userpart = a.userpart order
by m.username asc
for xml auto),'
"/>','/')
,'',''),'
"/>
','')
)m
如:
selectfor xml auto 主要用於將sql的查詢結果直接返回成xml語句,for xml 除了auto外 還有*from
(select
*from userino) a
cross
join (select username from userino
where username = a.username )b
select
*from
(select
*from userino) a
join (select username from userino ) b on a.username = b.username
select
*from
(select
*第一段sql顯然是錯的,有兩個原因:1.cross join本來就是無條件的,2. sql server會爆出如下錯誤:
the multi-part identifier "a.username" could not be bound.
select
*from
(select*[
value
]= a.username+
'test
' ) b
raw
和explicit
,詳見《超級簡單:使用for xml auto控制xml輸出》
來實現類似於使用userpart進行分組的效果,來分別篩選出各個userpart中的user,然後由於篩選出的結果是多行,所以使用 for xml 來把多行資料拼接成xml,最後很二的對xml進行拆分....
綜上,感覺這種實現方式比較獨特,又學習了sql server中的一些特性,和大家分享一下
很有意思的SQL多行資料拼接
今天為了實現乙個很原始的問題上網查資料,見到乙個很有意思的sql語句,和大家分享一下 要實現的sql查詢很原始 要求從第乙個表進行查詢得到第二個 式的資料,上網查詢之後竟然能寫出下面的sql 複製 如下 如下 如下 實踐 表資訊 id name age address 1 張三 20 zhangsa...
很有意思的博弈論
一 巴什博奕 bashgame 首先我們來玩乙個比較古老的報數遊戲。a和b一起報數,每個人每次最少報乙個,最多報4個。輪流報數,看誰先報到30.如果不知道巴什博弈的可能會覺得這個是個有運氣成分的問題,但是如果知道的人一定知道怎樣一定可以贏。比如a先報數的話,那麼b一定可以贏 這裡假定b知道怎麼正確的...
一道很有意思的題目
先列出 然後再開始解析 include stdafx.h include using namespace std class a class b public a void seta a data,int idx int tmain int argc,tchar argv for int i 0 i...