您好,登錄后才能下訂單哦!
本篇內容介紹了“如何實現用sql語句查詢交叉表”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
表一:
組名
成員1id
成員2id
成員3id
示例數據:
沖鋒組 1 2 3
后衛組 2 3 4
表二:
成員id
成員姓名
示例數據:
1 張三
2 李四
3 王五
4 陸二
要求結果
沖鋒組 張三 李四 王五
后衛組 李四 王五 陸二
復制代碼 代碼如下:
--建立測試環境
Create Table 表1(組名 varchar(10),成員1id varchar(10),成員2id varchar(10),成員3id varchar(10))
--插入數據
insert into 表1
select '沖鋒組','1','2','3' union
select '后衛組','2','3','4'
Create Table 表2(成員id varchar(10),成員姓名 varchar(10))
--插入數據
insert into 表2
select '1','張三' union
select '2','李四' union
select '3','王五' union
select '4','陸二'
--測試語句
select a.組名,
成員1=(select 成員姓名 from 表2 b where a.成員1id=b.成員id),
成員1=(select 成員姓名 from 表2 b where a.成員2id=b.成員id),
成員1=(select 成員姓名 from 表2 b where a.成員3id=b.成員id)
from 表1 a
--刪除測試環境
Drop Table 表1
Drop Table 表2
/*
組名 成員1 成員1 成員1
---------- ---------- ---------- ----------
沖鋒組 張三 李四 王五
后衛組 李四 王五 陸二
(所影響的行數為 2 行)
*/
復制代碼 代碼如下:
select
a.組名,
成員1 = max(case b.成員id = a.成員1id then b.成員姓名 end),
成員2 = max(case b.成員id = a.成員2id then b.成員姓名 end),
成員3 = max(case b.成員id = a.成員3id then b.成員姓名 end),
from
表一 a,
表二 b
group by
a.組名
復制代碼 代碼如下:
select
a.組名,
成員1 = max(case b.成員id = a.成員1id then b.成員姓名 end),
成員2 = max(case b.成員id = a.成員2id then b.成員姓名 end),
成員3 = max(case b.成員id = a.成員3id then b.成員姓名 end)
from
表一 a,
表二 b
group by
a.組名
復制代碼 代碼如下:
select a.組名,
成員1=(select 成員姓名 from 表2 b where a.成員1id=b.成員id),
成員1=(select 成員姓名 from 表2 b where a.成員2id=b.成員id),
成員1=(select 成員姓名 from 表2 b where a.成員3id=b.成員id)
from 表一 a
復制代碼 代碼如下:
正解是
select 表1.組名,
(select 表1.成員姓名 from 表2 b where 表1.成員1id=表2.成員id) as 成員1id,
(select 表1.成員姓名 from 表2 b where 表1.成員2id=表2.成員id) as 成員2id,
(select 表1.成員姓名 from 表2 b where 表1.成員3id=表2.成員id) as 成員3id
from 表1,表2
“如何實現用sql語句查詢交叉表”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。