查询结果返回每次都不一样

Viewed 72

一下这个SQL,每次执行返回结果都不一样,两种表都是聚合模型。
SELECT
count(*) as cc
FROM
(
SELECT
DISTINCT ac
FROM
xdr_source_log_login
WHERE
retm > '2024-05-01'
and flag = 1
and sess <> 'logout'
and scity <> ''
and ac <> ''
and sip in (
SELECT
DISTINCT wall_ip
FROM
xdr_wall
WHERE
wall_reason LIKE '%被多IP登录失败且一天内这些IP没有登录成功%'
and wall_time > '2024-05-14'
and wall_time < '2024-05-21'
)
) T

改成成join之后满足要求了。
SELECT
count( DISTINCT ac)
FROM
xdr_source_log_login join xdr_wall on xdr_source_log_login.sip=xdr_wall.wall_ip
and xdr_wall.wall_reason LIKE '%被多IP登录失败且一天内这些IP没有登录成功%'
and xdr_wall.wall_time > '2024-05-14'
and xdr_wall.wall_time < '2024-05-21'
WHERE
retm > '2024-05-01'
and flag = 1
and sess <> 'logout'
and scity <> ''
and ac <> ''


类似于这种查询结果返回每次不一样的情况非常多

1 Answers

在SQL查询中,count() + DISTINCT ++ DISTINCT 可能与count(DISTINCT column) + join 的计算逻辑确实不同;count()会计算结果集中所有行的数量,而count(DISTINCT column)会计算指定列中不同值的数量。