5

これはおそらく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%'

それはおそらく非常に悪い発言だと思いますが、これまでのところうまくいきました。最初は、ホスト名が「obl」のようではないエントリを除外します。私はこのような別のクエリがあります:

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

私の理解では、両方のクエリが同じテーブル上にあるため、この場合は結合は使用されません(ただし、結合に関する知識は非常に限られています)。Webサービスを介してこのデータベースにアクセスしていますが、データベースの種類がわかりません。

1つのクエリで両方のクエリから値を取得する方法について誰かが考えていますか?

4

3 に答える 3

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')

それでいいのですが、状況を考え直すことができると思います。考えて、必要に応じて編集します。

編集:あなたは単一のクエリであなたがしようとしていることを達成することができます、組合の必要はありません。

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')
)
于 2013-03-07T17:58:04.377 に答える
0

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

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'))
于 2013-03-07T18:01:35.843 に答える
0

ORを使用して両方を適用することで、2つのWHERE条件を1つにまとめることができます。このようなもの:

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ワードに大文字を使用すると、クエリが読みやすくなります。
  • 同じホスト名が繰り返されないようにする場合は、SELECTDISTINCTホスト名を使用する必要があります。
于 2013-03-07T18:03:03.487 に答える