我正在尝试学习 SQL,但这并不容易 :D
我需要代码来查找 Value1。
如果存在值 1,则将值 2 存储到 X 列中。
例如:
表1:
身份证 | 名字 | 姓氏 | 地点 | 年龄 | 喜欢蛋糕 |
---|---|---|---|---|---|
1 | 艾伦 | 雅各布森 | 德国 | 25 | 空 |
2 | 本尼 | 雅各布森 | 丹麦 | 65 | 空 |
3 | 本尼 | 布勒 | 瑞典 | 30 | 空 |
等等
表2
身份证 | 汽车 | 车型 |
---|---|---|
1 | 蒙迪欧 | 福特 |
2 | 106 | 标致 |
1 | 拉达 | 俄语 |
等等
表3
商店 | 现金 |
---|---|
商店-1 | 500$ |
商店2 | 200$ |
因此表 1 和 2 有触发键
[ID]
,表 1 有列 [DO LIKE CAKE]
但表 2 没有。
我希望每个表都有一个
[ID]
列,并且我想要有 [DO LIKE CAKE]
。我认为这本身就是代码:)
然后,如果值
[ID]
存在,则将值 2 粘贴到整个表的 [DO LIKE CAKE]
中 :) 因此它会在表 1 2 3 中查找 id,但只在表 1 和 2 中看到它,但在表 3 中看不到它:D
希望这是有道理的。
好吧,我不是 SQL 编码方面最好的 :D
我会帮助你,因为你似乎是新手。 首先,将来,请发布格式示例数据,以便人们轻松生成查询。我冒昧地在表变量中为您创建了这个,如下所示:
DECLARE @Table1 TABLE (ID INT, FirstName VARCHAR(50), LastName VARCHAR(50), Place VARCHAR(50), Age TINYINT, DoLikeCake BIT DEFAULT(NULL))
INSERT INTO @Table1 VALUES (1,'Allan','Jakobsen','Germany',25,NULL)
INSERT INTO @Table1 VALUES (2,'benny','Jakobsen','Denmark',65,NULL)
INSERT INTO @Table1 VALUES (3,'benny','buller','Sweden',30,NULL)
DECLARE @Table2 TABLE (ID INT, CarModel VARCHAR(50), CarType VARCHAR(50))
INSERT INTO @Table2 VALUES(1,'mondeo','Ford')
INSERT INTO @Table2 VALUES(2,'106','peugeot')
INSERT INTO @Table2 VALUES(1,'lada','russian')
DECLARE @Table3 TABLE (StoreName VARCHAR(50),Cash MONEY)
INSERT INTO @Table3 VALUES ('Store-1',500)
INSERT INTO @Table3 VALUES ('Store-2',200)
其次,我不确定您在查询中要查找什么。表三没有公共列,因此无法将其连接到主查询。我不确定“到处粘贴 DO LIKE CAKE”是什么意思,但您的查询在 Table2 中有多行与 Table1 中的行匹配。这将导致重复,除非以某种方式聚合数据。
看一下这个示例代码。我认为这就是你所追求的,但即使不是,你也应该能够弄清楚一般概念并移动事物。
如果您正在寻找其他内容,请澄清您的问题并回复。
SELECT t.ID
,t.FirstName
,t.LastName
,t.Place
,t.Age
,t.DoLikeCake
,STRING_AGG(t2.CarType, ',') AS CarTypes
,STRING_AGG(t2.CarModel, ',') AS CarModels
FROM @Table1 AS t
LEFT OUTER JOIN @Table2 AS t2 ON t2.ID = t.ID
GROUP BY
t.ID
,t.FirstName
,t.LastName
,t.Place
,t.Age
,t.DoLikeCake;