2013-03-07 67 views
5

這可能是由於我有限的SQL的知識,但我試圖用這樣的語句來獲得數據:是否有可能在一個查詢中執行多個SQL select語句?這兩個SELECT語句將是對同桌

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服務訪問這個數據庫,我不確定它是什麼樣的數據庫。

有沒有人有任何想法,我怎麼能從一個查詢中的兩個查詢中獲取值?

+0

你期待什麼樣的輸出? – 2013-03-07 18:01:34

回答

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

您可以將兩個WHERE條件合併爲一個,使用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') 

兩點:

  • 使用大寫字母SQL詞彙,更容易閱讀的查詢。
  • 也許你將不得不使用SELECT DISTINCT主機名,如果你想確定沒有得到相同的重複。
相關問題