gpt4 book ai didi

mysql - 两个表之间的异常报告

转载 作者:行者123 更新时间:2023-11-29 17:32:04 26 4
gpt4 key购买 nike

我需要在两个表之间运行某种异常报告。

Table 1
Login

enter image description here

Table 2 Scan

enter image description here

现在,对于表登录,盒子会以批处理分开的方式登录到系统,但在扫描中,它将盒子和批处理结合在一起。

我正在尝试确定哪些盒子尚未被扫描,但已被记录。

所以我编写了下面的脚本,但它没有给我正确的答案,因为结果是框都被记录和扫描。一些奇怪的原因??

SELECT distinct CONCAT_WS('-', box, batch) As box
FROM login a
WHERE a.profid = '46'
and dt between '2018/01/01 00:00:01am' and '2018/05/25 23:59:59 PM'
AND NOT EXISTS (SELECT 1
FROM scan b
WHERE b.profid = '6'
AND a.box = b.boxname)

我是不是搞错了?谢谢

最佳答案

您的查询看起来基本上没问题,只是两个表之间的联接条件看起来错误,并且根据您向我们展示的数据,它不起作用。试试这个版本:

SELECT DISTINCT CONCAT_WS('-', box, batch) AS box
FROM login a
WHERE
a.profid = '46' AND
dt >= '2018-01-01' AND dt < '2018-05-26' AND
NOT EXISTS (SELECT 1 FROM scan b
WHERE b.profid = '6' AND b.boxname LIKE CONCAT('%', a.box, '%'));

我所做的关键更改是将以下条件添加到 EXISTS 子查询中:

b.boxname LIKE CONCAT('%', a.box, '%')

例如,如果您尝试将框 DSDEN182 与框名称 DSDEN182-BATCHG77899M 进行匹配,这是有道理的。

旁注:虽然上述查询可能暂时有效并解除对您的阻止,但连接条件同时使用 LIKE 和字符串连接。这是一个非常昂贵的比较。为了获得更好的长期性能,请考虑在 loginscan 表上创建适当的联接列。

关于mysql - 两个表之间的异常报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50560381/

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