Mysql 使用子查询的内部联接从透视表中筛选记录

Mysql 使用子查询的内部联接从透视表中筛选记录,mysql,sql,Mysql,Sql,这是我的问题 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.relatedI

这是我的问题

 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
我需要添加一个和条件。我想知道怎么做

这是数据集

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

例如,对于相关id 4031,我需要检查
customFieldId
=11和
fieldValue
是否像
%dsasda%
一样,以及
customFieldId
=15和
fieldValue
是否像“%1%”

因此,这个数据集的查询结果应该有
4031
relatedId
作为答案,但我得到了所有3个相关id结果。它似乎是在使用或状态

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

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 count(*) >= 1
                 ^ remove equality operator
你要找回另外两个id,因为它们每一行都匹配1行(你已经圈出了它们)

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

HAVING count(distinct fieldValue) > 1