是否可以在查询中加入 JOIN 并使用 NOT IN() 子句?
我拥有的是
SELECT DISTINCT loc.*,
a.firstname,
a.lastname,
a.profileimg,
(((acos(sin((37.2790669*pi()/180)) * sin((`latitude`*pi()/180))+cos((37.2790669*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((-121.874722 - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance` FROM memb_geo_locations loc
JOIN memb_baseInfo a ON a.mID = loc.mID
JOIN memb_friends c ON (c.mID = loc.mID OR c.friendID = loc.mID) AND (c.mID = 21 OR c.friendID = 21)
WHERE loc.primaryAddress = '1'
AND loc.mID NOT IN(21)
HAVING `distance` < 25 ORDER BY `distance` ASC LIMIT 0, 25
我需要这条线
JOIN memb_friends c ON (c.mID = loc.mID OR c.friendID = loc.mID) AND (c.mID = 21 OR c.friendID = 21)
充当 NOT IN() 因为我试图将“ friend ”的人排除在结果之外 在 memb_friends 表上,列 mID 和friendID 在某种意义上是相同的数字。取决于谁发起了友谊请求。假设我的 ID 是 21,我可以是该表上的 friend ID 或 mID,而其他人的 ID 是对应的。比如说,我的名单上有 10 个 friend ,我的数据库中有 1000 个人。所以结论应该是查询完成后我有 990 个结果可以使用,但我坚持在这个问题上,要么如何加入表以供查询使用,然后如何从那里排除。
最佳答案
进行外连接并仅选择 c.mID 为 null 的行怎么样?
关于mySQL JOIN ON NOT()?可能的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515217/