SQL QUERY:如何在同一个查询中的多个位置创建和使用查询结果

r08

我正在尝试使用相同的查询结果多个宫殿,其中所有相同的查询重复(常见查询)在查询中。

完整查询

SELECT * 
FROM   (SELECT DISTINCT entityid, parententityid 
        FROM taggeditems
        INNER JOIN securitygroups
            ON entityid = securitygroups.sgentityid
        WHERE  securitygroupid IN (
            'bbe5df6a-e6be-4943-be4f-d2eafeb7ecb6',
            '5076c7f6-da01-412d-a23f-7d44a17a0c2d',
            'c01cb194-81d7-479f-9dec-5269ecd7bafa',
            '25c8eff1-1607-4a57-bd88-b4be9a1c3b73')
        AND projectname = 'MR GAT') AS A 
WHERE A.parententityid NOT IN (
    SELECT entityid 
    FROM   (SELECT DISTINCT entityid, parententityid 
            FROM taggeditems 
            INNER JOIN securitygroups
                ON entityid = securitygroups.sgentityid
            WHERE  securitygroupid IN (
                'bbe5df6a-e6be-4943-be4f-d2eafeb7ecb6',
                '5076c7f6-da01-412d-a23f-7d44a17a0c2d',
                'c01cb194-81d7-479f-9dec-5269ecd7bafa',
                '25c8eff1-1607-4a57-bd88-b4be9a1c3b73') 
            AND projectname = 'MR GAT') AS B) 
    OR A.parententityid IS NULL;

如果我们在上面的查询中看到

SELECT DISTINCT entityid, parententityid
FROM taggeditems
INNER JOIN SecurityGroups
    ON entityid = SecurityGroups.SGEntityId
WHERE securityGroupId IN (
    'bbe5df6a-e6be-4943-be4f-d2eafeb7ecb6',
    '5076c7f6-da01-412d-a23f-7d44a17a0c2d',
    'c01cb194-81d7-479f-9dec-5269ecd7bafa',
    '25c8eff1-1607-4a57-bd88-b4be9a1c3b73')
AND ProjectName = 'MR GAT'

使用两个相同的地方。而不是我想执行一次查询和相同的结果,我可以在需要进一步查询的地方使用。

我试过这样

SELECT *
FROM   (SELECT DISTINCT entityid,parententityid
        FROM taggeditems
        INNER JOIN SecurityGroups
            ON entityid = SecurityGroups.SGEntityId
        WHERE securityGroupId IN (
            'bbe5df6a-e6be-4943-be4f-d2eafeb7ecb6',
            '5076c7f6-da01-412d-a23f-7d44a17a0c2d',
            'c01cb194-81d7-479f-9dec-5269ecd7bafa',
            '25c8eff1-1607-4a57-bd88-b4be9a1c3b73')
        AND ProjectName = 'MR GAT') AS A
WHERE A.parententityid NOT IN (A) AS B)
OR A.parententityid IS NULL;

但错误如

    Incorrect syntax near the keyword 'as'.

如何一次又一次地使用相同的查询结果?

Damien_The_Unbeliever

您可以使用公共表表达式来减少查询的重复部分:

WITH FilteredItems as (
SELECT entityid,parententityid FROM taggeditems  INNER JOIN 
SecurityGroups ON entityid = SecurityGroups.SGEntityId
  WHERE securityGroupId in ('bbe5df6a-e6be-4943-be4f-d2eafeb7ecb6',
                            '5076c7f6-da01-412d-a23f-7d44a17a0c2d',
                            'c01cb194-81d7-479f-9dec-5269ecd7bafa',
                            '25c8eff1-1607-4a57-bd88-b4be9a1c3b73') and 
ProjectName = 'MR GAT'
)
SELECT distinct entityid,parententityid from FilteredItems
where parententityid not in (select entityid from FilteredItems) or parententityid is null

(因为IN正在评估一个条目是否出现在一个集合中,它不会受到重复的影响,我们不需要在DISTINCT那里应用任何

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL Count + 3个连接+在一个查询中的多个位置-如何编写Proen IF?

如何使用节点 js 创建和读取同一个临时 SQL 表

在同一个SQL查询中使用别名

需要 SQL 查询帮助:如何在同一个表中排除或优先考虑 SQL 中的行

SQL Server如何使用WHILE查询从多个结果中输出一个表结果

如何使用一个SQL查询创建多个表

SQL如何在同一个表上使用多个联接

SQL Server 为同一个日期选择查询返回不同的结果,在不同的场景中

如何在另一个SQL查询中使用SQL查询的结果

如何在 SQL Developer 中将多个查询结果选项卡中的结果提取到一个 excel 中?

SQL递归查询同一个表

交叉引用同一个表的 SQL 查询

有什么方法可以在同一个 SQL 查询中进行多个计数?

查询同一个SQL表不同条件的多个实例

如何对同一个查询 SQL 进行 2 个不同的计数?

如何从多个选择语句(WITHOUT UNION)创建一个 SQL 查询结果

SQL查询使用同一个表比较两个WHERE子句

如何更换?如果在同一个 oracle 查询中多次使用相同的值,则 oracle sql 中的值

SQL 选择和计数在同一个查询中

在同一个表中查找数字差异的复杂 SQL 查询

在一个 SQL 查询中创建多个计数

SQL查询,使用同一个表两次

在一个 SQL 查询中使用多个 SQL 查询结果

如何在额外列中的一个 sql 查询中组合 2 个 group by 查询的结果?

如何在应返回多个结果的sql查询返回中一次对一个结果执行操作?

SQL Server:查询以从同一个表和另一个表中获取数据

SQL如何在查询中为另一个查询使用值

SQL:如何在同一个表中合并 2 个两列并删除之后未使用的列?

如何使用一个SQL查询从两个表中获得结果?