sql语句一对多 join出一条数据

你胖到影响我了 2015-07-16 04:36:38
功能是这样 我有两张表 一张表数据多 一张表数据少
table1 table2
T1 T2
a a
b a
a
b
b

我想查出来table1的数据只有一条 但对应的table2的数据要全部显示

比如说 t1的a对应t2的aaa 这样的一条语句
...全文
1491 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2015-07-17
  • 打赏
  • 举报
回复
参考3楼就行了
挥泪斩女友 2015-07-16
  • 打赏
  • 举报
回复
这个容易,表一group by having count等于一,插到临时表,再jion表二
Pact_Alice 2015-07-16
  • 打赏
  • 举报
回复
CREATE TABLE #t1 (NAME VARCHAR(20)) INSERT INTO #t1 SELECT 'a' UNION ALL SELECT 'b' UNION ALL SELECT 'c' CREATE TABLE #t2 (NAME VARCHAR(20)) INSERT INTO #t2 SELECT 'a' UNION ALL SELECT 'a' UNION ALL SELECT 'a' UNION ALL SELECT 'b' UNION ALL SELECT 'b' UNION ALL SELECT 'c' UNION ALL SELECT 'c' UNION ALL SELECT 'c' ;WITH cet AS ( SELECT t1.NAME, t2.NAME AS Names, dense_rank()OVER( ORDER BY t2.NAME)ID FROM #t2 t2 LEFT JOIN #t1 t1 ON t1.NAME=t2.NAME ) SELECT (STUFF((SELECT ' '+Names FROM cet c WHERE c.ID=c1.ID FOR XML PATH('')),1,1,'') )AS NAME FROM cet c1 GROUP BY id
Pact_Alice 2015-07-16
  • 打赏
  • 举报
回复
3072398276
  • 打赏
  • 举报
回复
引用 3 楼 Landa_Ran 的回复:
CREATE TABLE #TABLE1
(
T1 VARCHAR(20)
)
INSERT INTO #TABLE1 VALUES('A'),('B')

CREATE TABLE #TABLE2
(
T2 VARCHAR(20)
)
INSERT INTO #TABLE2 VALUES('A'),('A'),('A'),('A'),('B'),('B'),('B'),('B')

SELECT 
	T1,
	(SELECT ''+T2
	 FROM #TABLE2
	 WHERE #TABLE2.T2=#TABLE1.T1
	 FOR XML PATH('')
	)
FROM #TABLE1
T1                   
-------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A                    AAAA
B                    BBBB

(2 行受影响)
po主 是这样的 T1 的列是主键 T2 的列 值是varchar T _ T 求解~~
AcHerat 2015-07-16
  • 打赏
  • 举报
回复
select * from table1 a left join table2 b on a.a = b.a
许晨旭 2015-07-16
  • 打赏
  • 举报
回复
CREATE TABLE #TABLE1
(
T1 VARCHAR(20)
)
INSERT INTO #TABLE1 VALUES('A'),('B')

CREATE TABLE #TABLE2
(
T2 VARCHAR(20)
)
INSERT INTO #TABLE2 VALUES('A'),('A'),('A'),('A'),('B'),('B'),('B'),('B')

SELECT 
	T1,
	(SELECT ''+T2
	 FROM #TABLE2
	 WHERE #TABLE2.T2=#TABLE1.T1
	 FOR XML PATH('')
	)
FROM #TABLE1
T1                   
-------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A                    AAAA
B                    BBBB

(2 行受影响)
  • 打赏
  • 举报
回复
引用 1 楼 tcmakebest 的回复:
楼主举的例子仍然太抽象了
- - 客户要求就是这么抽象
tcmakebest 2015-07-16
  • 打赏
  • 举报
回复
楼主举的例子仍然太抽象了

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧