2013-07-29 68 views
0

我想知道是否有一種方法在MySQL中檢查查詢是否產生了一些結果,如果沒有執行查詢。
實施例:檢查是否沒有結果與mysql

(SELECT * FROM table WHERE id=2) IF NO RESULT (SELECT * FROM table WHERE id=4) 

EDIT

我只需要一個查詢,基本上第一I檢查是否存在與PARAM(例如狀態= 0),如果沒有結果,我想的結果使用param更改爲status = 2執行相同的查詢。
希望它可以幫助

更多修改
基本上我有operatorators和部門表,另一個與所有的用戶,我首先檢查是否有在第一臺可用的運營商,它不是放假了,如果沒有結果,我將L選擇,並從第二個表管理,但前提是沒有運營商availbable

MORE MORE編輯
這是否有運營商提供,但是它不查詢檢查不選擇管理員

query = "SELECT b.id 
     FROM ".$SupportUserTable." b 
     INNER JOIN ".$SupportUserPerDepaTable." a 
      ON b.id=a.user_id 
     WHERE a.department_id=? AND b.holiday='0' AND a.user_id!=".$_SESSION['id']." 
     ORDER BY b.assigned_tickets,b.solved_tickets ASC LIMIT 1"; 

最新的解決方案
這不正是我一直在尋找,但它的作品,我願意改進措施,以避免兩個查詢的執行:

$query = "SELECT * 
       FROM(
         (SELECT b.id 
          FROM ".$SupportUserTable." b 
          INNER JOIN ".$SupportUserPerDepaTable." a 
           ON b.id=a.user_id 
          WHERE a.department_id=? AND b.holiday='0' AND a.user_id!=".$_SESSION['id']." 
          ORDER BY b.assigned_tickets,b.solved_tickets ASC LIMIT 1) 
        UNION 
         (SELECT id 
         FROM ".$SupportUserTable." 
         WHERE status='2' AND id!=".$_SESSION['id']." 
         ORDER BY assigned_tickets,solved_tickets ASC LIMIT 1) 
        ) tab 
        LIMIT 1 
      "; 
+1

http://stackoverflow.com/questions/1175217/sql-server-if-not-exists-usage – DarkBee

+0

有時這種問題指向糟糕的設計。 – Strawberry

+0

@Strawberry餐桌設計?因爲這是我能想到的最好的,用戶可以分配到多個部門,所以我決定創建一個不同的表(用戶和每個部門的用戶),第一個跟蹤用戶狀態(操作員,用戶或管理員)和假期和第二個用戶相關部門,我認爲添加管理員到第二個表是不利的,因爲如果我添加一個新部門,我也要添加每個管理員。如果您有任何建議,我會很樂意傾聽 – Razorphyn

回答

0
select t.* 
from 
(SELECT * FROM table 
WHERE id in (2,4) 
LIMIT 1)t 
order by t.id 
+0

我不認爲他想要得到兩個結果 – mirkobrankovic

+0

@eggyal現在檢查。 – Luv

+0

現在有一個語法錯誤(外層查詢中沒有'FROM'子句);子查詢使用'LIMIT'而沒有'ORDER BY',這仍然會產生不確定的結果。 – eggyal

1

你可以這樣做

Select IF(
(SELECT count(*) FROM table WHERE id=2), (SELECT * FROM table WHERE id=2),(SELECT * FROM table WHERE id=4)) 
+0

'IF()'不能返回多個列。 – eggyal

2
SELECT * FROM table WHERE id = (
    SELECT id FROM table WHERE id IN (2,4) ORDER BY id LIMIT 1 
) 
+0

你可以看看新的編輯?謝謝 – Razorphyn

+0

@Dheed:我建議不要在此查詢中使用「IF」。嘗試使用我上面顯示的技術進行調整。 – eggyal