我有两张table: rules
以及 measure_units
. 规则有许多度量单位,度量单位有许多规则。所以我们有一个连接表 rule_id
以及 measure_unit_id
.
现在,给定一个规则,我要选择所有具有完全相同度量单位的规则。
rule1 => grams
rule2 => grams,meters
rule3 => grams,meters,litre
rule4 => meters
rule5 => grams,meters
rule6 => litre,grams
给定规则2(用克和米),我需要选择规则2和规则5。
我的尝试是:
SELECT `rules`.* FROM `rules`
LEFT JOIN `measurables` ON `measurables`.`rule_id` = `rules`.`id`
LEFT JOIN `measure_units` ON `measure_units`.`id` = `measurables`.`measure_unit_id`
WHERE `measure_units`.`id` IN (1,2)
GROUP BY `measurables`.`rule_id`
HAVING (count(*) = 2)
但此查询不起作用,因为选择至少具有id为1和2的度量单位的所有规则。规则3也是如此。
可能是一个与mysql兼容的查询。
这里有一把小提琴:https://www.db-fiddle.com/f/vxg6vyjpsyjqn7sn83jlei/1 在何处尝试查询。
1条答案
按热度按时间b91juud31#
我将提取规则2的单位,并将其与所有其他规则进行比较。mysql使这一点易于使用
group_concat
:如果您需要有关规则的更多信息,可以加入
rules
table。