MySql 查询 - 如果表两个表具有相同的数据,请从更重要的表中进行选择



我有三个表

规则、default_client_rules和client_rules

规则

包含所有规则、其名称、参数等的列表。

default_client_rules有一个适用于所有用户的规则列表。桌子:

`id`, `rule_id`, `num_required`

用户还可以创建自己的规则存储在client_rules中。

`id`, `rule_id, `num_required`

用户可以创建自己的规则来覆盖默认规则,因此在我的表中我可能有:

default_client_rules 2130

client_rules 731

客户端规则

优先于默认客户端规则表。我想编写一个查询来显示所有规则。我遇到的问题是,在上述情况下,当client_rules中有一个与default_client_rules相同的规则条目时,我只想选择client_rules条目。

这样的事情可能会起作用。它基本上执行客户端规则的左联接,假设始终存在默认规则。它会检查 client_rule.rule_id 是否为 null。如果为 null,则使用默认值,否则使用客户端规则值。

select 
  dcr.rule_id,
  if(isnull(cr.rule_id), dcr.num_required, cr.num_required) as num_required,
  if(isnull(cr.rule_id), dcr.id, cr.id) as id
FROM default_client_rules dcr LEFT JOIN client_rules cr 
ON dcr.rule_id=cr.rule_id

这是一个小提琴。

相关内容

  • 没有找到相关文章

最新更新