我有大量代码可以根据某个字段是否出现在列表中来“过滤”一些记录。
目前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, ...
但它不起作用,我不太喜欢这种方法,感觉很乱。
任何帮助表示赞赏。