2011-03-20 85 views
2

我有兩個SELECT查詢與UNION合併。這裏是MySQL的查詢:MySQL UNION - 檢測幾個SELECT返回結果

SELECT `id`,`type`,`text` 
    FROM my_table 
WHERE position = '1' 
    AND status = '1' 
    AND targeting = 'all' 
UNION 
SELECT `id`,`type`,`text` 
    FROM my_table 
WHERE position = '1' 
    AND status = '1' 
    AND targeting LIKE '%US%' 

我怎樣才能找出這兩個SELECT查詢執行TRUE爲了從所需的行中獲取結果?

回答

7

您可以根據查詢的哪個部分添加一個額外的列到你的查詢,返回不同的常數成功:

SELECT 'query1' AS `src`, `id`, `type`, `text` 
FROM my_table 
WHERE position = '1' AND status = '1' AND targeting = 'all' 

UNION ALL 

SELECT 'query2' AS `src`, `id`, `type`, `text` 
FROM my_table 
WHERE position = '1' AND status = '1' AND targeting LIKE '%US%' 

此外,在這種情況下,你不需要UNION都:

SELECT 
    targeting LIKE '%US%' AS `targeting_like_us`, 
    targeting = 'all' AS `targeting_equals_all`, 
    `id`, 
    `type`, 
    `text` 
FROM my_table 
WHERE position = '1' 
AND status = '1' 
AND (targeting LIKE '%US%' OR targeting = 'all') 
+0

@Mark Byers,我如何在我的PHP腳本中使用它?請告訴,請! – ilnur777 2011-03-20 21:00:34

+1

@ ilnur777:到目前爲止你有什麼?你能發佈你當前的PHP腳本嗎? – 2011-03-20 21:03:45

+0

@Mark Byers我需要一個SELECT查詢,它將根據行中設置的目標從my_table中獲取一行,並將其顯示在廣告位置。該廣告將僅針對目標訪客或所有訪客顯示,因爲我擁有隨機橫幅廣告顯示腳本。 – ilnur777 2011-03-20 21:08:41