Php 从mysql中的多个表中获取特定结果
这有点令人困惑,因此我将逐步解释我的目标,下面是我正在处理的表格(第一个表格,第二个表格,和第三个表格)。首先,我需要验证第二个表中的Php 从mysql中的多个表中获取特定结果,php,mysql,sql,mysqli,row,Php,Mysql,Sql,Mysqli,Row,这有点令人困惑,因此我将逐步解释我的目标,下面是我正在处理的表格(第一个表格,第二个表格,和第三个表格)。首先,我需要验证第二个表中的用户名是否存在于第一个表中,如果不存在,请删除没有通用用户名的用户名 结果应该是这样的(George被排除在外,因为它没有第一个表的通用用户名): 然后,我想通过比较前面的结果和第三个表来验证。我的目标是检查前面结果中的用户id和用户名是否在第三个表中有公共行,如果有,则排除该行,只检索唯一的行 由于第三个表中尚不存在5423 | Bob,因此总体结果应如下所示:
用户名是否存在于第一个表中,如果不存在,请删除没有通用用户名的用户名
结果应该是这样的(George被排除在外,因为它没有第一个表的通用用户名):
然后,我想通过比较前面的结果和第三个表来验证。我的目标是检查前面结果中的用户id和用户名是否在第三个表中有公共行,如果有,则排除该行,只检索唯一的行
由于第三个表中尚不存在5423 | Bob
,因此总体结果应如下所示:
总体结果:
user_id | username
5423 | Bob
第一张表:
| username
| Bob
| Jessie
| Vicky
user_id | username
5423 | Bob
123 | Georgie
43 | Vicky
第二张表:
| username
| Bob
| Jessie
| Vicky
user_id | username
5423 | Bob
123 | Georgie
43 | Vicky
第三张表:
user_id | username
1 | Luke
54 | Stephenie
43 | Vicky
第一个联接使用内部联接
,因此结果列表中只有与条件匹配的记录。第二个联接使用左联接
,因此左侧表中的所有记录(无论是否有匹配行)都将显示在结果列表中。任何不匹配的行在右侧表的列上都将有一个NULL
值
因为您只想在最终结果上获得不匹配的记录,所以需要在右侧表中有过滤NULL
值的WHERE
子句
第一个联接使用内部联接
,因此结果列表中只有与条件匹配的记录。第二个联接使用左联接
,因此左侧表中的所有记录(无论是否有匹配行)都将显示在结果列表中。任何不匹配的行在右侧表的列上都将有一个NULL
值
由于您只想在最终结果上获取不匹配的记录,因此需要在右侧表中使用过滤NULL
值的WHERE
子句。尝试以下操作:
SELECT b.*
FROM FirstTable a
INNER JOIN SecondTable b
ON a.username = b.username
LEFT JOIN ThirdTable c
ON b.user_ID = c.user_ID
WHERE b.`username` <> c.`username`
选择b*
来自第一表a
内联接表b
在a.username=b.username上
左联接第三表c
在b.user\u ID=c.user\u ID上
其中b.`username`c.`username`
试试这个:
SELECT b.*
FROM FirstTable a
INNER JOIN SecondTable b
ON a.username = b.username
LEFT JOIN ThirdTable c
ON b.user_ID = c.user_ID
WHERE b.`username` <> c.`username`
选择b*
来自第一表a
内联接表b
在a.username=b.username上
左联接第三表c
在b.user\u ID=c.user\u ID上
其中b.`username`c.`username`
可能有用可能有用第一个表没有用户id,它只是一个用户名列表,因此这一行a.user\u id无效,您确定了!谢谢兄弟,我非常感激!第一个表没有user\u id,它只是一个用户名列表,因此这一行a.user\u id无效,你搞定了!谢谢兄弟,我非常感激!