有没有办法实现类似的目标:
SELECT *
FROM tb_values
WHERE (value1, value2, value3) SUBSET_OF
( SELECT value
FROM tb_value
WHERE isgoodvalue = true
)
更多信息:我有一个名为项目的表。每个项目都有标签。一个标签可以被多个项目共享。有一个名为projectTagMap 的映射表。现在用户使用标签来过滤项目。使用 UI 上的复选框选择标签。因此,用户选择多个标签来过滤项目。我应该从包含用户选择的所有标签的项目表中选择项目。
从你的伪代码我猜你想检查(动态)值列表是否是由提供的另一个列表的子集SELECT
。如果是,那么将显示整个表格。如果没有,则不会显示任何行。
以下是实现这一目标的方法:
SELECT *
FROM tb_values
WHERE
( SELECT COUNT(DISTINCT value)
FROM tb_value
WHERE isgoodvalue = true
AND value IN (value1, value2, value3)
) = 3
UPDATED经过OP的解释后:
SELECT *
FROM project
JOIN
( SELECT projectid
FROM projectTagMap
WHERE isgoodvalue = true
AND tag IN (tag1, tag2, tag3)
GROUP BY projectid
HAVING COUNT(*) = 3
) AS ok
ON ok.projectid = project.id
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)