gpt4 book ai didi

sql - 什么是无界查询?

转载 作者:太空狗 更新时间:2023-10-30 01:47:13 25 4
gpt4 key购买 nike

无界查询是没有WHERE param = value 语句的查询吗?

很抱歉这个简单。

最佳答案

无限查询是一种搜索条件不是特别具体的查询,因此可能会返回非常大的结果集。没有 WHERE 子句的查询肯定属于这一类,但让我们考虑一下其他一些可能性。假设我们有如下表格:

CREATE TABLE SALES_DATA
(ID_SALES_DATA NUMBER PRIMARY KEY,
TRANSACTION_DATE DATE NOT NULL
LOCATION NUMBER NOT NULL,
TOTAL_SALE_AMOUNT NUMBER NOT NULL,
...etc...);

CREATE TABLE LOCATION
(LOCATION NUMBER PRIMARY KEY,
DISTRICT NUMBER NOT NULL,
...etc...);

假设我们想要拉入一个特定的交易,并且我们知道销售的 ID:

SELECT * FROM SALES_DATA WHERE ID_SALES_DATA = <whatever>

在这种情况下,查询是有界的,我们可以保证它会拉入一行或零行。

另一个有界查询的例子,但有一个大的结果集,当 23 区的主管说“我想查看我区每家商店去年每天的总销售额”时生成的查询,它会是这样的

SELECT LOCATION, TRUNC(TRANSACTION_DATE), SUM(TOTAL_SALE_AMOUNT)
FROM SALES_DATA S,
LOCATION L
WHERE S.TRANSACTION_DATE BETWEEN '01-JAN-2009' AND '31-DEC-2009' AND
L.LOCATION = S.LOCATION AND
L.DISTRICT = 23
GROUP BY LOCATION,
TRUNC(TRANSACTION_DATE)
ORDER BY LOCATION,
TRUNC(TRANSACTION_DATE)

在这种情况下,查询应该为 23 区的每家商店返回 365(或更少,如果商店不是每天营业)行。如果该地区有 25 家商店,它将返回 9125 行或更少。

另一方面,假设我们的销售副总裁想要一些数据。他/她/不太确定想要什么,但他/她/很确定无论今年前六个月发生了什么……不太确定哪个年......也不确定地点 - 可能在 23 区(他/她/它在过去 6 年中与管理 23 区的个人发生争执,自从那场高尔夫锦标赛......好吧,没关系......但如果一个问题可以卡在 23 区主任的门上,那就这样吧!)......当然他/她/它想要所有细节,并把它放在他/她/它的 table 太甜了!因此我们得到一个看起来像这样的查询

SELECT L.DISTRICT, S.LOCATION, S.TRANSACTION_DATE,
S.something, S.something_else, S.some_more_stuff
FROM SALES_DATA S,
LOCATIONS L
WHERE EXTRACT(MONTH FROM S.TRANSACTION_DATE) <= 6 AND
L.LOCATION = S.LOCATION
ORDER BY L.DISTRICT,
S.LOCATION

这是一个无限查询的例子。它会返回多少行?好问题 - 这取决于业务状况、营业地点的数量、2 月的天数等。

更简单地说,如果您可以查看查询并非常清楚它将返回多少行(即使该数字可能相对较大),则该查询是有界的。如果你不能,那就是无限的。

分享和享受。

关于sql - 什么是无界查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3068142/

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