这样的需求如何写SQL语句,求教!

yyk7248 2018-07-12 06:47:05
想在表甲的B列填写表乙的A列,条件:表甲的A列=表乙的B列。
比如,表甲代表邀请专家的表,A列代表领域,B列是要填写的专家名,表乙代表专家库,A列代表专家名,B列代表领域。 想要在表甲填表乙的专家名,从上至下选取足够数量的专家即可。
...全文
175 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyk7248 2018-07-12
  • 打赏
  • 举报
回复
百度知道有人这样解:
select A,B=(select stuff((select ','+乙.A from 乙 where 乙.B=甲.A for xml path('')),1,1,'')) from 甲
yyk7248 2018-07-12
  • 打赏
  • 举报
回复
版主的回答很受启发,学到了很多用法,
另外,mysql 不支持ROW_NUMBER(),找到了这篇文章,也很好,分享给大家:
http://www.mysqltutorial.org/mysql-row_number/
吉普赛的歌 2018-07-12
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('jia') IS NOT NULL DROP TABLE jia
IF OBJECT_ID('yi') IS NOT NULL DROP TABLE yi
GO
CREATE TABLE jia( A INT,B INT )
CREATE TABLE yi ( A INT,B INT )
INSERT INTO jia(A) VALUES (1)
INSERT INTO jia(A) VALUES (1)
INSERT INTO jia(A) VALUES (1)
INSERT INTO jia(A) VALUES (2)
INSERT INTO jia(A) VALUES (2)

INSERT INTO yi(A,B) VALUES (1,1)
INSERT INTO yi(A,B) VALUES (2,1)
INSERT INTO yi(A,B) VALUES (3,1)
INSERT INTO yi(A,B) VALUES (4,1)
INSERT INTO yi(A,B) VALUES (5,1)
INSERT INTO yi(A,B) VALUES (1,2)
INSERT INTO yi(A,B) VALUES (2,2)
INSERT INTO yi(A,B) VALUES (3,2)
------------- 以上为测试数据 --------------

;WITH cteJia AS(
SELECT ROW_NUMBER() OVER (PARTITION BY A ORDER BY B) AS rid, * FROM jia
),cteYi AS(
SELECT ROW_NUMBER() OVER (PARTITION BY B ORDER BY A) AS rid, * FROM yi
)
SELECT cteJia.A,cteYi.A AS [B]
FROM cteJia LEFT JOIN cteYi ON cteJia.A=cteYi.B AND cteJia.rid=cteYi.rid

/*
A B
1 1
1 2
1 3
2 1
2 2
*/

22,206

社区成员

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

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