作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须将文件中的行导入数据库。我必须检查外键是否存在。这是我应该导入的行示例:
A 481 11/23/1981 12 77000 DESCRIPTION_1 $5,098
A 482 11/23/1981 15 77000 DESCRIPTION_1 $5,098
A 482 11/23/1981 12 77000 DESCRIPTION_1 $5,098
A 481 11/23/1981 9 77000 DESCRIPTION_1 $5,098
A 481 11/23/1981 12 77000 DESCRIPTION_1 $5,098
A 481 11/23/1981 12 77000 DESCRIPTION_1 $5,098
A 481 11/23/1981 1 77000 DESCRIPTION_1 $5,098
A 481 11/23/1981 1 77000 DESCRIPTION_1 $5,098
A 481 11/23/1981 1 77000 DESCRIPTION_1 $5,098
A 481 11/23/1981 1 77000 DESCRIPTION_1 $5,098
这里的外键是 12、15、9、12、1。我想检查这些外键是否之一。在示例中,外键 12 不存在。最简单的方法是逐行测试:
SELECT COUNT(*) From TypeTable WHERE IdType = 12 -- 0
SELECT COUNT(*) From TypeTable WHERE IdType = 15 -- 1
SELECT COUNT(*) From TypeTable WHERE IdType = 9 -- 1
SELECT COUNT(*) From TypeTable WHERE IdType = 12 -- 1
SELECT COUNT(*) From TypeTable WHERE IdType = 1 -- 1
此方法的问题是每个不同的外键都有一个查询,我应该导入的文件有数千行(可能还有数千个外键)。
所以我想知道是否可以使用“SQL 的集合特性”在一个查询中进行检索,但我不知道该怎么做...
PS:在我的查询结果中,我需要知道数据库中不存在外键
问候,
弗洛里安
最佳答案
如果数据已经加载到暂存表中,那么您可以使用它
SELECT
*
FROM
myStagingTable ST
WHERE
NOT EXISTS (SELECT *
FROM TypeTable TT
WHERE ST.FKCol = TT.IdType)
要执行基于集合的操作,您需要一个包含所需 FK 值的表格。这可能是同一连接上的临时表,并通过扫描文件来填充。通过将 myStagingTable
更改为 #myFKTable
关于SQL : How to know if a set of values exist in database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6056950/
我是一名优秀的程序员,十分优秀!