我有大量代码可以根据列表中是否出现某个字段来“过滤”某些记录。
目前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`)
)
你明白了!
我的问题是如何检查table 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, ...
但它不工作,我不喜欢这种方法,感觉非常凌乱。
任何帮助表示感谢。
答案 0 :(得分:0)
如果要查找2个表中存在的值,请实现INNER JOIN
。
SELECT UniqueID
FROM Table1 t1
INNER JOIN Table2 t2
ON t1.UniqueID = t2.UniqueID
WHERE (YourCritiera);