sql - 如何在 MS SQL WHERE IN 中删除(选择多列)

标签 sql sql-server-2008

我有一张表,可以称之为“Cluster”,它与第二张表 Element 相关。

簇:

Id Group Ele1 Ele2 Ele3
1   1     1    2     3
2   1     4   NULL   9
3   2     5    8     7

元素
Id Name
1  'A'
2  'b'
3  'c'
4  'd'
5  'z'
6  'j'
7  't'
8  'r'
9  'e'

现在我必须删除一个集群
DELETE FROM Cluster
WHERE   Cluster.Group= 1

但在我从 Cluster 中删除行之前我需要从 Element 中删除所有相关的行
DELETE FROM Element
WHERE Id IN (SELECT Ele1 Ele2 Ele3 
             FROM Cluster 
             WHERE Cluster.Group= 1)

但是这个查询不起作用所以我想念什么?

最佳答案

尝试这个:

DELETE FROM Element
WHERE Id IN (SELECT Ele1
             FROM Cluster 
             WHERE Cluster.[Group] = 1
                   And Ele1 Is Not NULL

             Union 

             SELECT Ele2
             FROM Cluster 
             WHERE Cluster.[Group] = 1
                   And Ele2 Is Not NULL

             Union 

             SELECT Ele3 
             FROM Cluster 
             WHERE Cluster.[Group] = 1
                   And Ele3 Is Not NULL
)

关于sql - 如何在 MS SQL WHERE IN 中删除(选择多列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16735100/

相关文章:

sql - 生成日期范围之间的日期

mysql - mysql mariadb 中的 query_cache_min_res_unit 是什么?

java - 如何将数组数据类型(H2数据库)转换为java List<Long>?

sql - 根据参数值执行数据集-SSRS

php - mysql 计数函数问题

sql-server-2008 - SQL Server 2008 中的压缩数据库备份

SQL : Weird query performance after "select into" a new table

C# SqlParameters 没有被传递到查询中

c# - 在 WPF 应用程序中执行 INSERT 查询时 SqlCommand 方法错误

python - 编写 Python 服务器的选项,该服务器将持续检查数据库的更新和更改