我有一段代码负责根据某个字段是否出现在列表中来“过滤”某些记录。MySQL将列表中的任何值与另一个列表中的任何值进行匹配
目前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`)
)
新表2结构
CREATE TABLE IF NOT EXISTS `table2` (
`id` int(11) NOT NULL,
`uniqueid` varchar(32) NOT NULL,
`value` int(11) DEFAULT NULL,
...
PRIMARY KEY (`id`)
)
你的想法!
我的问题是如何检查表2中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, ...
但它没有工作,我不喜欢这种方法,感觉非常混乱。
任何帮助表示赞赏。
您能否提供所需的结果集? – 2012-07-12 14:06:56