0

奇妙な(おそらくテーブルのデザインが悪い)クエリの質問がありますが、これを簡単に解決する方法は考えられません。

これが私が持っているようなテーブルレイアウトです:

| id                 | int(11)     | NO   | PRI | NULL    | auto_increment | 
| num                | varchar(15) | YES  | MUL | NULL    |                | 
| type               | varchar(4)  | YES  |     | NULL    |                | 

タイプは実際には、enum( "val1"、 "val2"、 "blah")

numは、テーブルに3つのエントリを持つことができ、3つの異なるタイプのそれぞれに1つずつあります。

必要なクエリは、「val1」と「val2」の両方のエントリを持つ「num」の個別の数の数です。

これを処理するための簡単なクエリはないと思いますが、私が思いついた唯一の解決策は、val1の個別のエントリをメモリテーブルにダンプし、val2の個別のエントリをメモリテーブルにダンプすることです。

次に、レコード数が最も少ないテーブルを特定し、小さいテーブルに基づいてサブクエリを作成し、大きいテーブルで一致する数を探します。

上記は悪いハックのように聞こえますが...

私はここで何かが足りないのですか...これを行うためのより良い方法を見ている人はいますか?

4

1 に答える 1

3
select count(*)
from `MyTable`
where `type` in ('val1', 'val2')
group by `num`
having count(distinct `type`) = 2
于 2012-11-02T21:15:10.237 に答える