我目前正在进行此查询,但是,我总是得到一个应该没有的结果,因为那里有相应的行。
select `likes`.*, `likeshistory`.`like_id`, `likeshistory`.`instagram_id` from `likes` join `likeshistory` on `likes`.`id` = `likeshistory`.`like_id` where (`finished` = '0' and `active` = '1' and `banned` = '0') and `instagram_id` not in ('2') limit 1
基本上我想选择一个"喜欢"没有"喜欢历史" for(instagram_id = 2)
谢谢! 威廉
答案 0 :(得分:0)
您可以使用not exists
。查询的目的更明确:
select `likes`.*, `likeshistory`.`like_id`, `likeshistory`.`instagram_id`
from `likes` l
where not exists (select 1
from `likeshistory` lh
where l.id = lh.`like_id` and
(`finished` = '0' and `active` = '1' and `banned` = '0') and lh.instagram_id not in ('2')
);
如果子查询中的任何条件(相关子句除外)都在likes
上,那么这些条件应该在外部查询中。