php - 从mysql中的多个表中获取特定结果

标签 php mysql sql mysqli row

这有点令人困惑,因此我将逐步解释我的目标,下面是我正在处理的表(第一表第二表和< strong>第三表)。首先,我需要验证 Second Table 中的 username 是否存在于 First Table 中,如果不存在,则删除没有的普通用户名

结果应该是这样的(George 被排除在外,因为它没有First Table 的通用用户名):

user_id | username
5423    | Bob
43      | Vicky

THEN 我想通过比较上面之前的结果和第三表来验证。我的目标是检查上面先前结果中的 user_id AND usernameThird Table 上是否有共同的行,如果有,则排除那个,并且只检索独特的。

5423 | 以来,总体结果应如下所示Bob 在第三张表上还不存在:

总体结果:

user_id | username
5423    | Bob

第一个表:

| username
| Bob
| Jessie
| Vicky

第二张表:

user_id | username
5423    | Bob
123     | Georgie
43      | Vicky

第三张表:

user_id | username
1       | Luke
54      | Stephenie
43      | Vicky

最佳答案

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   c.user_ID IS NULL

第一个连接使用 INNER JOIN 这样只有符合条件的记录才会出现在结果列表中。第二个连接使用 LEFT JOIN,这样左侧表中的所有记录,无论是否有匹配的行,都会显示在结果列表中。任何不匹配的行在右侧 表的列上都将具有一个NULL 值。

由于您只想在最终结果中获取不匹配的记录,因此您需要有 WHERE 子句来过滤 右侧的 NULL 值边 table 。

关于php - 从mysql中的多个表中获取特定结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19352421/

相关文章:

php - 如何从mysql中获取数据并存储在android中的Sqlite数据库中

php - 在 Windows : how to fix "PHP Startup: Unable to load dynamic library" issues? 中运行 PHP

php - Symfony 2.7访问Web目录之外的图像

php - 删除主 ID 时删除所有子 ID

mysql - 缓慢的更改查询 MySql openjpa

java - SQL 进程遗留?

php - 在循环内将数组添加到多维数组

java - JPA java.lang.IllegalArgumentException : NamedQuery of name not found

java - 来自 php mysql 的 Android 响应代码 200 但未在数据库中创建条目

java - 从 java 导入 MySQL DB 不起作用