这是场景。我有以下 MySQL 表
CREATE TABLE IF NOT EXISTS `pages` (
`ciso` varchar(3) CHARACTER SET ascii NOT NULL DEFAULT 'AUS',
`page` varchar(24) CHARACTER SET ascii NOT NULL,
`dgroup` TINYINT(1) DEFAULT 0,
UNIQUE KEY `page` (`page`,`ciso`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
通常,它将包含 ciso = 'AUS' 的多个页面的条目。在某些情况下,将有一个特定于美国的覆盖条目,其中页面名称将与 AUS 条目的相同,但 ciso = 'USA'。
我不时需要做的是 - 根据偏好选择具有指定 dgroup 设置 & ciso = 'USA' 的所有页面条目,但如果不存在此类条目,则退回到匹配的 AUS 条目。为了更清楚一点
page ciso dgroup
PgA AUS 3
PgB AUS 3
PgC AUS 3
PgD AUS 4
PgB USA 3
PgC USA 3
在这种情况下,对于 dgroup = 3,查询应返回 PgA:AUS、PgB:USA 和 PgC:USA。
我可以用一点 PHP 来处理所有这些,但我怀疑可以编写一些智能的 SQL 来完成这项工作。只是,我在 SQL 方面并不那么聪明。也许这里有人可以帮忙?