未找到col1和col2的sql插入

sirbozc5  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(330)

编辑重新措辞的问题,以澄清。。。
我需要找到一种方法来搜索所有记录 Col2 <> 1 中的值 Col1 可以用col2中的其他值表示。结果应该只显示 Col1 从来没有 value =1 in Col2 因为表中缺少记录。
身份证在里面 Col1 将在另一个表中作为唯一记录找到,因此我可以 join 或者做一些类似的事情 table1.Col1=table2.Col2 最后我需要它 INSERT 中缺少记录 table1 其中没有id为的记录 Col1 AND Col2=1 . Table2 ```
Col1|Col2|Col3|

| 1|....|....|
| 2|....|....|
| 3|....|....|
| 4|....|....|
`Table1`
|Col1|Col2|Col3|Col4|

| 1| 1|....|....|
| 1| 2|....|....|
| 1| 3|....|....|
| 2| 3|....|....|
| 2| 4|....|....|
| 2| 5|....|....|
| 3| 1|....|....|
| 3| 2|....|....|
| 4| 2|....|....|
| 4| 3|....|....|
| 4| 4|....|....|

在上面的表格中,我的搜索应该只显示我,并且那些id需要插入一个 `1` 在
Col2 `Table1` ```
|   2|....|....|....|
|   4|....|....|....|

... 因为他们已经有记录了
Col2=1 Table1 ```
| 1|....|....|....|
| 3|....|....|....|

... 因为col1有一个匹配值,其中col2中的一个值=1。我希望这有道理。
我需要一个选择的例子,以及插入如果不存在
在运行insert之前,我需要确保逻辑正常工作,所以我需要一个select语句来显示 `Col1` 丢失记录的值。
谢谢您
莱夫b。
ms sql server 2016和mssms 2019
kmpatx3s

kmpatx3s1#

你的问题仍然令人困惑。有一个查询引用了两个表,但示例数据只显示一个表。
根据你的第一段,你可以得到适当的答案 col1 值为:

SELECT t1.col1, . . .
FROM t1
GROUP BY t1.col1
HAVING SUM(CASE WHEN t1.col2 = 1 THEN 1 ELSE 0 END) = 0;

这个 . . . 用于其他列。然后可以将其插入到另一个表或同一个表中。也许:

INSERT INTO t1 (col1, col2, . . .)
    SELECT t1.col1, 0, . . .
    FROM t1
    GROUP BY t1.col1
    HAVING SUM(CASE WHEN t1.col2 = 1 THEN 1 ELSE 0 END) = 0;
9avjhtql

9avjhtql2#

我最终得到了这个解决方案。。。

/****The select query****/
SELECT DISTINCT [Table1].[Col1]
FROM [Table1]
JOIN [Table2] ON [Table1].[Col1] = [Table2].[Col1]
WHERE NOT EXISTS (SELECT [Table1].[Col1], [Table1].[Col2] 
  FROM [Table1]
  WHERE [Table1].[Col1] = [Table2].[Col2] AND [Table1].[Col2] = 1)
/****The Insert query****/
INSERT INTO [Table1]
([Table1].[Col1]
,[Table1].[Col2]
,[Table1].[Col3]
,[Table1].[Col4])
SELECT DISTINCT [Table1].[Col1]
,1
,CURRENT_TIMESTAMP
,0
FROM [Table1]
JOIN [Table2] ON [Table1].[Col1] = [Table2].[Col1]
WHERE NOT EXISTS (SELECT [Table1].[Col1], [Table1].[Col2] 
FROM [Table1]
WHERE [Table1].[Col1] = [Table2].[Col2] AND [Table1].[Col2] = 1)

相关问题