3

MySQL と php を使用して、単一のクエリで特定のクエリに一致するすべての結果を取得するにはどうすればよいですか? たとえば、次のクエリがあります。

SELECT * FROM table1 WHERE typeid = 5

以下のクエリから結果が見つからない場合は、typeid が 1 の table1 からすべての結果を検索します。

SELECT * FROM table1 WHERE typeid = 1

単一のクエリでそれを行うにはどうすればよいですか? 次のクエリを実行すると、5 と 1 の両方が得られます。

SELECT * FROM table1 WHERE typeid = 5 OR typeid = 1

私がしたいのは、typeid 5 が割り当てられたすべてのレコードに対して table1 をクエリすることだけです。結果が見つからない場合は、1 つのクエリで typeid = 1 に割り当てられたすべての結果を取得します。どうやってやるの?または、2 つのクエリが必要ですか?

編集

単一のレコードではなく、返される複数のレコードにこれが必要です。

4

3 に答える 3

5

これはどう?

SELECT * FROM table1
WHERE CASE WHEN (SELECT COUNT(1) FROM table1 WHERE typeid = 5) > 0 THEN
    typeid = 5
ELSE
    typeid = 1
END;
于 2012-05-17T17:53:44.980 に答える
2
SELECT *
FROM   table1
WHERE  typeid = IF((SELECT COUNT(*) FROM table1 WHERE typeid = 5), 1, 5);
于 2012-05-17T18:07:38.187 に答える
0
    SELECT * 
    FROM table1 
    WHERE typeid = 5
  UNION ALL
    SELECT * 
    FROM table1 
    WHERE typeid = 1
      AND NOT EXISTS
          ( SELECT * 
            FROM table1 
            WHERE typeid = 5
          ) ;
于 2012-05-17T18:09:49.513 に答える