2013-09-25 47 views
3

以下是方案。我有以下MySQL表SQL查询选择备用选项

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; 

通常它会与首席信息安全官=“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:美国和PGC:美国。

我可以用一点PHP来处理所有这些,但我怀疑可以编写一个能够完成这项工作的SQL智能。只是,当谈到SQL时,我并不那么聪明。也许这里有人可以帮忙?

回答

1

我不知道我是否真的明白你在寻找什么,但根据你的结果,我认为这个查询是可以的。

SELECT page, ciso, dgroup 
FROM pages 
Where (ciso = 'USA' OR ciso = 'AUS') 
AND  dgroup = 3 

在那里你可以指定dgroup

+0

谢谢你,做到了。我只做很基本的SQL,但即使如此,当我阅读你的答案时,我有一点荷马西姆森的时刻 - 为什么我没有想到或! – DroidOS

+0

你是最受欢迎的;) –

0
SELECT page, last(ciso) as last FROM `pages` where dgroup=3 group by page 
+0

谢谢你的答案,但我不认为它有帮助。我想我的错 - 也许我的问题不太清楚。 – DroidOS