在sql中对不相关嵌套查询的处理原则

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在sql中对不相关嵌套查询的处理原则相关的知识,希望对你有一定的参考价值。

参考技术A 1,在使用子查询的时候要用括号把查询语句括起来,
2、子查询不能查询text,image字段
3、子查询里还可以包括子查询,最多可以嵌套32层。
4、在where 子句与having 子句都可以用

SQL:在 SQL 中编写嵌套查询 [关闭]

【中文标题】SQL:在 SQL 中编写嵌套查询 [关闭]【英文标题】:SQL: write nested query in SQL [closed] 【发布时间】:2014-06-20 15:53:26 【问题描述】:

我的表有以下列:

帐户密钥 产品组 产品版本

我想列出具有 ProductGroup=A 且 ProductVersion=13 且没有 ProductGroup=A 且 ProductVersion =19 的不同 AccountKey。

请分享sql代码。

非常感谢!

对不起,我想我不清楚上面的问题: 该表存储每个帐户密钥已购买的产品组和产品版本。因此,一个帐户密钥可以购买同一个 productGroup 但具有不同 ProductVersions 的多个产品。

我想知道购买了ProductGroup A 13版本但不是19版本的accountKey是什么。

例如如果我的桌子如下所示 AccountKey ProductGroup ProductVersion 123一13, 123一19, 456乙10, 456一13, 789乙19,

所以我想要的结果是 456 仅用于查询。

【问题讨论】:

【参考方案1】:
SELECT DISTINCT AccountKey
FROM TABLE 
WHERE (ProductGroup = 'A' AND ProductVersion = 13) 
   OR (ProductGroup != 'A' AND ProductVersion = 19)

【讨论】:

谢谢大家。我正在尝试使用它来解决 UI 子查询/嵌套过滤器。很难让用户将业务需求转换为 (ProductGroup != 'A' AND ProductVersion = 19) 这种情况。【参考方案2】:

你能试试这个查询吗

SELECT DISTINCT AccountKey 
FROM Table 
WHERE (ProductGroup = 'A' AND ProductVersion = 13) 
   OR (ProductGroup <> 'A' AND ProductVersion = 19)

【讨论】:

【参考方案3】:

你的意思是:

SELECT DISTINCT AccountKey
FROM TABLE 
WHERE (ProductGroup = 'A' AND ProductVersion = 13) 
   AND NOT (ProductGroup = 'A' AND ProductVersion = 19)

...这将包括除“A”之外的产品组。

还是要将结果限制为仅 ProductGroup 'A'?

【讨论】:

以上是关于在sql中对不相关嵌套查询的处理原则的主要内容,如果未能解决你的问题,请参考以下文章

数据库相关嵌套子查询

SQL相关子查询和嵌套子查询的区别

SQL语句 - 嵌套查询

SQL语句 - 嵌套查询

超实用的SQL语句之嵌套查询

SQL Server 之 子查询与嵌套查询