我有一段代碼負責根據某個字段是否出現在列表中來「過濾」某些記錄。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