我有三个表'用户','朋友','friendsrequests'。
'用户'包含id,firstname和lastname,'friends'和'friendsrequests'都包含users_id_a和users_id_b。
当我搜索新朋友时,我选择名字是LIKE的id:无论是什么名字或姓氏:无论如何。但是,我想排除其他两个表中存在的那些id。
我知道如何通过应用程序逻辑解决这个问题,但我也知道我不应该这样做。我知道我不应该链接SELECT语句,我应该使用连接。
答案 0 :(得分:2)
您已回答了自己的问题,因为您知道可以使用joins
。这里有很多关于如何在MySQL中进行连接的例子。
有几种连接类型,但在此实例中需要的连接类型可能是LEFT OUTER。您可以使用IS NULL
对其他两个表上的字段进行过滤。因此,无论这些表中是否有任何数据,这样做都是加入其他表。使用WHERE IS NULL
过滤出现有的那些。
您可以采用WHERE NOT EXISTS
方法,而不是使用联接。如果您不熟悉SQL连接,那么这个逻辑可能会更适合您的街道。
一个例子可能是:
SELECT * FROM FRIENDS f
WHERE NOT EXISTS (SELECT 1 FROM friendsrequests fr WHERE f.user_id = fr.user_id)
可在此处找到一些示例: SELECT * WHERE NOT EXISTS
使用IN
语句或特别是WHERE NOT IN (SELECT ...)
希望如果你仍然坚持在http://sqlfiddle.com/这样的网站上发布你的确切sql架构和要求,这将引导你,你将更有可能得到更具体的回应。