检查mysql是否没有结果

时间:2013-07-29 07:46:51

标签: mysql

我想知道mysql中是否有办法检查查询是否产生了一些结果,如果没有执行查询。
示例:

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

修改

我只需要一个查询,基本上首先我检查是否有一个带有参数的结果(ex status = 0)如果没有结果我想执行相同的查询,并将param更改为status = 2。 /> 希望它能帮助你

更多编辑
基本上我有一个带有操作员和部门的表以及另一个带有所有用户的表,首先我检查第一个表中是否有可用的操作员并且它没有休假,如果没有结果我将从第二个表中选择和管理,但只有在没有操作员可用时才

更多编辑
此查询检查是否有可用的运算符,但它没有选择admin

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
            ";

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

你可以这样做

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

答案 2 :(得分:0)

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