【发布时间】:2013-07-29 07:46:50
【问题描述】:
我想知道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
";
【问题讨论】:
-
有时这类问题指向糟糕的设计。
-
@Strawberry Tables 设计?因为这是我能想到的最好的,用户可以分配到多个部门,所以我决定创建一个不同的表(每个部门的用户和用户),首先跟踪用户状态(操作员、用户或管理员)和假期和用户关联部门的第二个,我认为将管理员添加到第二个表并不有利,因为如果我添加一个新部门,我还必须将每个管理员添加到它。如果您有任何建议,我很乐意倾听
-
所以给定用户可能(同时)是一个部门的
operator和另一个部门的administrator? -
对不起,用户可以是操作员(多个部门)或管理员(仅限全局)
标签: mysql