我有一个工人表和一个相关的 workerGeofence 表。
CREATE TABLE IF NOT EXISTS `workergeofences` (
`ID` int(11) NOT NULL,
`WorkerID` varchar(20) NOT NULL,
`GeofenceID` int(11) NOT NULL,
`isActive` tinyint(4) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=latin1;
我只需要返回 workerGeofences 表中至少有一个 isActive 为 1 的条目的工人。
我可以通过以下方式获得预期的结果:
SELECT distinct w.ID, Title, FName, SName, Email, Birthday, Address, Phone, description,
companyID
FROM Workers w WHERE companyID = ?
and w.ID IN (SELECT WorkerID FROM WorkerGeofences WHERE isActive <> 0)
limit ?,10
但是 in 子查询是详尽的,因为当我运行解释时,我可以看到它正在扫描整个表。我将如何解决这个问题?