0

特定のフィールドがリストに表示されるかどうかに基づいて、いくつかのレコードを「フィルタリング」するためのコードがたくさんあります。

現在SELCT * FROM table1 ... AND value IN (8, 6, 4, 2, 9, 1, 3, 5, 7) ...

table1構造の場合:

CREATE TABLE IF NOT EXISTS `table1` (
    `uniqueid` varchar(32) NOT NULL,
    `value` int(11) DEFAULT NULL,
    ...
    PRIMARY KEY (`uniqueid`)
)

ここvalueで、別のテーブルに格納する必要があります。テーブルには複数の「値」が含まれている可能性があります。

新しいtable1構造:

CREATE TABLE IF NOT EXISTS `table1` (
    `uniqueid` varchar(32) NOT NULL,
    ...
    PRIMARY KEY (`uniqueid`)
)

新しいtable2構造

CREATE TABLE IF NOT EXISTS `table2` (
    `id` int(11) NOT NULL,
    `uniqueid` varchar(32) NOT NULL,
    `value` int(11) DEFAULT NULL,
    ...
    PRIMARY KEY (`id`)
)

あなたはアイデアを得る!

uniqueid私の質問は、table2のレコードが最初の例のリストにあるかどうかを確認する方法です。

ある種のCOUNTサブクエリを使用することを検討しましたが、よくわかりません。私は試した:

SELECT * FROM table1, table2 
            WHERE table1.uniqueid = table2.uniqueid 
            AND (SELECT COUNT(id) FROM table1, table2 
                       WHERE table2.uniqueid = table1.uniqueid ) > 0 
            AND table2.value IN (8, 6, ...

しかし、それはうまくいきませんでした、そして私はアプローチが本当に好きではありません、非常に厄介に感じます。

助けていただければ幸いです。

4

1 に答える 1

0

2つのテーブルに存在する値を検索する場合は、を実装しINNER JOINます。

   SELECT UniqueID
   FROM Table1 t1
   INNER JOIN Table2 t2 
     ON t1.UniqueID = t2.UniqueID
   WHERE (YourCritiera);
于 2012-07-12T13:59:29.640 に答える