gpt4 book ai didi

sql - 返回不包含特定列的所有表的查询

转载 作者:行者123 更新时间:2023-12-02 08:53:59 24 4
gpt4 key购买 nike

这是一个简单的 SQL 查询,它将返回具有以下列名称“userid”或“user_id”的所有表。

SELECT  t.name 
FROM sys.tables t
INNER JOIN sys.columns c ON t.object_id = c.object_id
WHERE c.name LIKE 'userid' OR c.name LIKE 'user_id'
ORDER BY name

但是,我在这里想做的是获取所有不包含“userid”列和“user_id”列的表。这个应该怎么查询呢?

附注如果表还有其他不同的列,使用 NOT LIKE 仍会返回包含“userid”或“user_id”列的表。

非常感谢。

最佳答案

您需要“不存在 userid/user_id 列的表”

SELECT
t.name
FROM
sys.tables t
WHERE
NOT EXISTS (SELECT *
FROM sys.columns c
WHERE t.object_id = c.object_id AND c.name IN ('userid', 'user_id'))
ORDER BY
t.name

编辑:

您还可以在 EXCEPT 子句中使用原始查询

SELECT t.name FROM sys.tables t
EXCEPT
SELECT t.name
FROM sys.tables t
INNER JOIN sys.columns c ON t.object_id = c.object_id
WHERE c.name IN ('userid', 'user_id')
ORDER BY t.name

这两个查询应该给出相同的计划和性能

关于sql - 返回不包含特定列的所有表的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6354565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com