gpt4 book ai didi

mysql - 内部连接子查询以从数据透视表中过滤记录

转载 作者:行者123 更新时间:2023-11-28 23:45:23 26 4
gpt4 key购买 nike

这是我的查询

 SELECT t.*
FROM `User` `t`
INNER JOIN (
SELECT cv.relatedId
FROM CustomValue cv
WHERE (cv.customFieldId=11 AND (cv.fieldValue like '%dsasda%')) OR (cv.customFieldId=15 AND (cv.fieldValue like '%1%'))
GROUP BY cv.relatedId
HAVING count(*) >= 1
) tblcv ON tblcv.relatedId = t.id

我需要添加一个 AND 条件。我想知道怎么做。

这是数据集。

enter image description here

如蓝色圆圈所示,我需要比较特定 relatedId 的两条记录。

例如,对于相关的 id 4031,我需要检查 customFieldId = 11 和 fieldValue%dsasda% 和如果 customFieldId = 15 和 fieldValue 像 '%1%'

所以这个数据集的查询结果应该有 4031 relatedId 作为答案,但我得到了所有 3 个相关的 id 结果。它似乎正在使用 OR CONDITION。

enter image description here

当尝试使用 AND 条件时。我没有得到任何结果。这是 AND 条件。

SELECT cv.relatedId
FROM CustomValue cv
WHERE (cv.customFieldId=11 AND (cv.fieldValue like '%dsasda%')) AND (cv.customFieldId=15 AND (cv.fieldValue like '%1%'))
GROUP BY cv.relatedId
HAVING count(*) >= 1

最佳答案

如果你想同时匹配这两个条件,那么你需要在你的 having 中至少匹配 2 行

HAVING count(*) >= 1
^ remove equality operator

您将取回其他 2 个 id,因为它们每个都匹配 1 行(您已圈出它们)。

如果 (relatedId,fieldValue) 不是唯一的,则使用 distinct 确保每个组都具有两个值。

HAVING count(distinct fieldValue) > 1

关于mysql - 内部连接子查询以从数据透视表中过滤记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33686124/

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