首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL能否确定一组可能的列值中哪些值不存在?

SQL能否确定一组可能的列值中哪些值不存在?
EN

Stack Overflow用户
提问于 2012-10-04 01:12:06
回答 2查看 52关注 0票数 0

我有一个独特的专栏。我还有一组已知的元素,它们是该列的可能值。我需要知道哪些可能的值还没有出现在表中,因此适合插入。

对于SQL,这是可能的吗?还是需要后期处理?

目前,我使用" in“运算符来选择列值等于集合中的元素的所有行。然后我通过后期处理从我的集合中删除所有匹配的元素。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-04 01:18:44

将允许的值放在临时表allowed中,然后使用NOT IN使用子查询

代码语言:javascript
复制
SELECT *
FROM allowed
WHERE allowed.val NOT IN (
    SELECT maintable.val
)

一些DB将允许您“就地”构建一个表,而不必创建一个单独的表。例如,在PostgreSQL (任何版本)中:

代码语言:javascript
复制
SELECT *
FROM (
    SELECT 'foo'
    UNION ALL SELECT 'bar'
    UNION ALL SELECT 'baz'    -- etc.
) inplace_allowed
WHERE inplace_allowed.val NOT IN (
    SELECT maintable.val
)

更现代版本的PostgreSQL (也许还有其他do )将允许您使用稍微更好的VALUES语法来做同样的事情。

票数 1
EN

Stack Overflow用户

发布于 2012-10-04 01:18:01

要完全在SQL中实现这一点,您需要创建一个包含一列的单独的表。每行保存一组已知元素中的一个值。假设该表名为ElementList,另一个表名为Existing:

代码语言:javascript
复制
 SELECT * FROM ElementList WHERE Element NOT IN 
    (SELECT DISTINCT Element FROM Existing)

根据您使用的数据库引擎,您可以使用临时表来创建和保存列表,而无需将其永久保存在数据库中。但是,存储允许元素的列表对于约束现有表中的元素列(以及在用户界面中向用户呈现允许的元素)很有价值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12713468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档