选择多个表MySQL

时间:2013-10-05 09:33:46

标签: mysql

我有三个表'用户','朋友','friendsrequests'。

'用户'包含id,firstname和lastname,'friends'和'friendsrequests'都包含users_id_a和users_id_b。

当我搜索新朋友时,我选择名字是LIKE的id:无论是什么名字或姓氏:无论如何。但是,我想排除其他两个表中存在的那些id。

我知道如何通过应用程序逻辑解决这个问题,但我也知道我不应该这样做。我知道我不应该链接SELECT语句,我应该使用连接。

1 个答案:

答案 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架构和要求,这将引导你,你将更有可能得到更具体的回应。