0

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

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

编辑

我只需要一个查询,基本上首先我检查是否有带有参数的结果(例如状态=0)如果没有结果我想执行相同的查询,参数更改为状态=2。
希望它可以帮助

更多编辑
基本上我有一个包含操作员和部门的表和另一个包含所有用户的表,首先我检查第一个表中是否有可用的操作员并且它不是在度假,如果没有结果我将从中选择和管理第二个表,但前提是没有可用的运算符

更多更多编辑
此查询检查是否有可用的操作员,但它没有选择管理员

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

3 回答 3

2
SELECT * FROM table WHERE id = (
  SELECT id FROM table WHERE id IN (2,4) ORDER BY id LIMIT 1
)
于 2013-07-29T07:55:36.717 回答
1

你可以这样做

Select IF(
(SELECT count(*) FROM table WHERE id=2), (SELECT * FROM table WHERE id=2),(SELECT * FROM table WHERE id=4))
于 2013-07-29T07:53:14.313 回答
0
select t.*
from
(SELECT * FROM table 
WHERE id in (2,4)
LIMIT 1)t
order by t.id
于 2013-07-29T07:49:59.593 回答