numbers
さまざまなnums
範囲からなるテーブルがあります[0-9]
--------
| nums |
--------
| 0 |
| 1 |
| .... |
| 9 |
--------
この表のデカルト積を複数回(実際には、正確には8回)取得したいと思います。
SELECT * FROM numbers A, numbers B, numbers C, numbers D, ...
A.nums
とB.nums, ...
は一意の組み合わせであり、別の数値と同じ値ではありません。
これが私が見たいと思ういくつかのサンプル出力です:
(0, 1, 2, 3)
(3, 2, 1, 0)
(2, 1, 3, 0)
(0, 2, 1, 3)
(0, 9, 8, 7)
(1, 2, 3, 4)
(1, 3, 5, 9)
(1, 9, 8, 7)
...ただし、タプルのような(0, 0, 1, 2), (1, 1, 2, 2), etc.
タプルも繰り返さないでください。たとえば、タプルのすべての値は、タプルの別の値とは異なる(1, 2, 3, 4) and (1, 2, 3, 4)
必要があります。
これを行うにはもっと効率的な方法があると確信していますが、私はA.nums != B.nums, ...
あらゆる可能性に頼ってきました。比較的効率的なようです。8ウェイデカルト積で最大300ミリ秒のランタイムを提供しますが、同様のランタイムを備えた、よりシンプルでエレガントなソリューションがあるかどうかを知りたいと思います。