【问题标题】:check combination of records in table检查表中的记录组合
【发布时间】:2010-11-23 05:51:48
【问题描述】:

我有两个值数组,例如 X、Y、Z 和 1,2 有一个表 A 有两列。我想验证表 A 中所有组合的记录是否存在,无论是否重复。 例如

X 1

Y 1

Z 1

X 2

Y 2

Z 2

提前致谢!

【问题讨论】:

    标签: sql oracle h2


    【解决方案1】:

    无论值如何,以下内容都应该起作用:

    select col1, col2
    from (select distinct col1 from combtest), (select distinct col2 from combtest)
    minus
    select col1, col2
    from combtest
    

    首先它得到可能的组合,然后减去实际的组合。

    【讨论】:

    • 非常好。希望 T-SQL 有一个减号运算符。
    【解决方案2】:

    这适用于任何数据集,并且不假设您知道表格中的值。

    查询返回所有缺失的行。您可以轻松地将其转换为插入语句来填充您的表格。

    SELECT *
    FROM
    (select * from (SELECT DISTINCT col1 FROM table1) CROSS JOIN (SELECT DISTINCT col2 FROM table1)) AS t1
    LEFT OUTER JOIN table1 ON t1.col1 = table1.col1 AND t1.col2 = table1.col2
    WHERE
    table1.col1 is null
    

    【讨论】:

    • 我刚刚看到您用“oracle”标记了您的问题。此查询专为 SQL Server 设计。不管怎样,原理是一样的。
    • 感谢您的回复。我尝试了查询并按照描述工作得很好。实际上这些数组值来自外部,所以我需要将它们传递给查询而不是根据表本身比较组合。此外,这些组合是动态的,并且会在未来增长。
    • 我还想提一提的是,该表可能没有一些行可以比较。例如值 X 的行可能不存在,但我仍然想比较这个。所以它可能会丢失 X 与行集的比较
    猜你喜欢
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多