2013-09-25 49 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