0

クエリが結果を生成するかどうかを確認する方法が mysql にあるかどうかを知りたいのですが、そうでない場合はクエリを実行します。
例:

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

編集

必要なクエリは 1 つだけです。基本的に最初に、パラメータ (例: status=0) を含む結果があるかどうかを確認します。結果がない場合は、パラメータを status=2 に変更して同じクエリを実行します。
それが役立つことを願っています

詳細編集
基本的に、オペレーターと部門を含むテーブルと、すべてのユーザーを含む別のテーブルがあります。最初のテーブルに利用可能なオペレーターがいるかどうかを確認し、休日ではない場合、結果がない場合は選択してから管理します2 番目のテーブル、ただしオペレーターが利用できない場合のみ

MORE MORE EDIT
このクエリは、使用可能なオペレーターが存在するかどうかを確認しますが、管理者は選択しません

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

最新の解決策
これはまさに私が探していたものではありませんが、機能します.2つのクエリの実行を回避するための改善を受け入れています:

$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

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 に答える