7

これはあまり賢明ではないかもしれませんが、WHERE IN句に重複する基準がある場合、MySQLに正確な重複行を返させたいと思います。これは可能ですか?

この例を見てください:

SELECT
   columns
FROM
   table
WHERE
   id IN( 1, 2, 3, 4, 5, 1, 2, 5, 5)

MySQLでID5の行を3回、ID 1と2を2回、3と4を1回返すようにしたいと思います。

引数の長さ、および重複カウント(1回、2回、3回など)は任意であるため、またはINに依存したくありません。そうでなければ、このようなことは可能ですか?UNIONJOIN

4

1 に答える 1

4

SQLにとってかなり重要なJOINを禁止したい理由がわかりません。これは、関数型言語での関数呼び出しを禁止するようなものです。

これを解決する良い方法は、返したいIDを含む結果セットを作成して結合することです。これを行う1つの方法は次のとおりです。

SELECT Table1.*
FROM Table1
JOIN (SELECT 1 AS id
      UNION ALL SELECT 2
      UNION ALL SELECT 3
      UNION ALL SELECT 4
      UNION ALL SELECT 5
      UNION ALL SELECT 1
      UNION ALL SELECT 2
      UNION ALL SELECT 5
      UNION ALL SELECT 5) AS T1
ON Table1.id = T1.id

この方法を検討したかどうかわかりませんか?それはあなたが恐れているように見える問題のどれも持っていません。

結合を禁止する場合、ストアドプロシージャを使用しない限り、これを行うことはできません。これは、結合よりも悪いと思います。

于 2010-02-13T21:45:28.710 に答える