2013-07-29 65 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