表 course:
id title
1 數學
2 美術
3 體育
4 武術
表 student:
id name courselist
1 張三 1,2
2 李四 3
3 王五 2,3,4
4 趙六 3,4
我想要的查詢結果是這樣的,請各位大神顯神通
id name coursestr
1 張三 數學,美術
2 李四 體育
3 王五 美術,體育,武術
4 趙六 體育,武術
uj5u.com熱心網友回復:
CREATE TABLE t_course(id INT, title VARCHAR(50))
INSERT INTO t_course
SELECT 1 , '數學' UNION ALL
SELECT 2 ,'美術' UNION ALL
SELECT 3 ,'體育' UNION ALL
SELECT 4, '武術'
CREATE TABLE t_student(id INT , name VARCHAR(50), courselist VARCHAR(50) )
INSERT INTO t_student
SELECT 1, '張三', '1,2' UNION ALL
SELECT 2, '李四', '3' UNION ALL
SELECT 3, '王五', '2,3,4' UNION ALL
SELECT 4, '趙六', '3,4'
SELECT
t1.id, t1.name,
courselist = SUBSTRING(t1.courselist, t2.number, CHARINDEX(',', t1.courselist + ',', t2.number) -t2.number )
INTO #T1
FROM t_student t1, master..spt_values t2
WHERE t2.type = 'P' AND CHARINDEX(',', ',' + t1.courselist, t2.number) = t2.number
GROUP BY t1.id, t1.name, t1.courselist,
SUBSTRING( t1.courselist, t2.number,CHARINDEX(',', t1.courselist + ',', t2.number)-t2.number )
SELECT t.*,tc.title
INTO #T2
FROM #T1 t
LEFT JOIN t_course tc ON t.courselist = tc.id
SELECT
id,name,
coursestr = (SELECT STUFF((SELECT ','+title FROM #T2 WHERE id = t2.id FOR XML PATH('')),1,1,''))
FROM #T2 t2
GROUP BY id ,name
DROP TABLE #T1
DROP TABLE #T2
id name coursestr
----------- -------------------- --------------
1 張三 數學,美術
2 李四 體育
3 王五 美術,體育,武術
4 趙六 體育,武術
(4 行受影響)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/230841.html
標籤:基礎類
下一篇:匯編基礎題目,求代碼
