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`)
)

你明白了!

我的问题是如何检查 table2 中的任何记录uniqueid是否在第一个示例中给出的列表中。

我考虑过使用某种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

If you wanted to find those values that exist in 2 tables, implement an INNER JOIN.

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