2011-07-20 4 views
3

がテーブルを考えると可能性オーバーライドを取得:行の選択が、

id domain  name value 
---------------------------------- 
1  NULL   a  v1 
2  example.com a  v2 
3  example.net a  v3 
4  NULL   b  v4 
5  example.net b  v5 
6  example.com c  v6 
7  example.com d  v7 
8  NULL   d  v8 

私は=「example.com」ドメインのために以下のような結果を取得するクエリを実行するにはどうすればよいですか?ドメインに値が指定されていない場合は、NULLドメインとみなされます。

name value 
-------------- 
a  v2 
b  v4 
c  v6 
d  v7 

とドメイン= "example.net" について:

name value 
-------------- 
a  v3 
b  v5 
d  v8 

答えて

2

ので

(select name, value 
from <your_table_name> 
where domain = 'example.com') 
union 
(select name, value 
from <your_table_name> 
where domain is null 
and name not in 
    (select name 
    from <your_table_name> 
    where domain = 'example.com')) 
+0

ありがとう、それは素晴らしい作品:-) –

0

valueの最大オーバー集計:

SELECT name, MAX(value) AS max_value FROM thetable GROUP BY name; 
SELECT name, MAX(value) AS max_value FROM thetable WHERE domain = "example.net" GROUP BY name; 
0

なぜないのが好きシンプルセレクトを使用してください?