2013-03-07 2 views
5

同じテーブル上にあるだろうが、私はこのようなステートメントを使用してデータを取得しようとしています:1つのクエリ内で複数のSQL select文を実行できますか?どちらのSELECT文は、これはおそらく、私の限られたSQLの知識によるものである

SELECT hostname 
FROM mytable 
WHERE hostname NOT LIKE '%obl%' 
    AND group NOT IN ('group1','group2','group3','group4','group5','group6','group7') 
    AND osname LIKE '%Windows%' 
    AND hostname NOT LIKE 'nic%' 

私はそれはおそらく非常に悪いです実現をしかし、これまでのところこれまでに働いています。最初は、hostnameが "obl"のようなものではないエントリを除外します。 は、両方のクエリは、(加入の私の知識は非常に限られているが)同じテーブルの上にあるので、が、この場合に使用されない参加し、私が理解から

SELECT hostname 
FROM mytable 
WHERE hostname LIKE '%obl%' 
    AND group IN ('group9','group0') 

:私はこのような別のクエリを持っています。私はWebサービス経由でこのデータベースにアクセスしていますが、どのような種類のデータベースであるかはわかりません。

誰かがどのように私は両方のクエリから1つのクエリで値を得ることができるのアイデアはありますか?

+0

どのような出力を期待していますか? –

答えて

8

UNION文を使用する必要があります。

SELECT hostname FROM mytable 
WHERE hostname 
    NOT LIKE '%obl%' AND 
    group NOT IN ('group1','group2','group3','group4','group5','group6','group7') 
    AND osname LIKE '%Windows%' 
    AND hostname not LIKE 'nic%' 

UNION 

SELECT hostname FROM mytable 
WHERE hostname 
    LIKE '%obl%' 
    AND group in ('group9','group0') 

これで解決しますが、条件を満たしている人たちを考え直すことができます。私はそれを考え、必要に応じて編集します。

EDIT:あなたは、単一のクエリで、ユニオンの必要はありませんしようとしていることを達成することができます。

SELECT hostname FROM mytable 
WHERE (
    hostname NOT LIKE '%obl%' 
    AND group NOT IN ('group1','group2','group3','group4','group5','group6','group7') 
    AND osname LIKE '%Windows%' 
    AND hostname NOT LIKE 'nic%' 
) 
OR (
    hostname LIKE '%obl%' 
    AND group IN ('group9','group0') 
) 
0

あなたは、これらの二つの文を組み合わせることunionステートメントまたはOR条件を使用することができます。

select hostname from mytable where (hostname not like '%obl%' and group not in ('group1','group2','group3','group4','group5','group6','group7') and osname like '%Windows%' and hostname not like 'nic%') 
OR 
(hostname like '%obl%' and group in ('group9','group0')) 
0

あなたはそれらの両方を適用するためにORを使用して、ちょうど1に2つのWHERE条件を組み合わせることができます。このような何か:

SELECT hostname FROM mytable WHERE 
(hostname NOT LIKE '%obl%' AND group NOT IN ('group1','group2','group3','group4','group5','group6','group7') AND osname LIKE '%Windows%' AND hostname NOT LIKE 'nic%') 
OR 
(hostname LIKE '%obl%' AND group IN ('group9','group0') 

2点:

  • 使用大文字のSQLの言葉のためには、クエリを読みやすくなります。
  • もし、同じものが繰り返されないようにするには、SELECT DISTINCT hostnameを使用する必要があります。