gpt4 book ai didi

mysql - 如何查找where子句中哪些部分排除了数据?

转载 作者:行者123 更新时间:2023-11-29 01:26:02 27 4
gpt4 key购买 nike

我有一个查询A,如下所示:

SELECT * FROM my_table WHERE foreign_key = 'abc' AND field1 = 'foo' AND field2 = 'bar';

有没有办法找出 where 子句的哪一部分负责排除与数据超集相比的数据?例如与查询B相比:

SELECT * FROM my_table WHERE foreign_key = 'abc';

我知道您可以在单独的查询中获取where子句的每个部分,并获取查询B的差异数量。有没有更有效的方法或最佳实践?

目标是标记排除的数据行及其排除原因。

最佳答案

我将使用简化的查询来回答:

SELECT *
FROM my_table
WHERE field1 = 'foo' AND field2 = 'bar';

我们可以尝试使用CASE表达式来标记失败的原因:

SELECT
id,
CASE WHEN (field1 <> 'foo' OR field1 IS NULL) AND
(field2 <> 'bar' OR field2 IS NULL)
THEN 'field1,field2'
WHEN (field1 <> 'foo' OR field1 IS NULL)
THEN 'field1'
WHEN (field2 <> 'bar' OR field2 IS NULL)
THEN 'field2'
ELSE 'pass' END AS reason
FROM my_table;

请注意,此查询实际上没有 WHERE 子句;它返回所有记录,每条记录要么标记为通过,要么标记为会导致失败的字段。

关于mysql - 如何查找where子句中哪些部分排除了数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54200082/

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