Mysql连接查询

标签 mysql

我在数据库中使用三个表,并且我需要的查询应该组合所有三个表。 这些表格看起来像:

表A:

     id   |   name   |   status   
---------------------------------
     5    |   john    |     1
     7    |   mike    |     1
     8    |   jane    |     0

表B:

 send-id  |  receive-id  |  notification
-------------------------------------------
    12    |      5       |       1
    5     |      23      |       1
    8     |      14      |       1
    19    |      7       |       2
    14    |      5       |       1

表C:

  registered-id  |   status-reg
 ----------------------------------   
       5         |      7
       7         |      7
       8         |      7
       9         |      3

我需要列出表 A 中状态为“1”、表 C 中状态为“7”的用户,并且这些用户未在表 B 列“receive-id”中列出,其值为“通知”栏中的“2”。

此示例中的结果将是:

    id   |   name    |   status   |  notification
 --------------------------------------------------
     5   |   john    |     1      | 

ID 号为 7 和 8 的用户将从列表中排除。 ID# 7 的用户,因为它位于表 B 中的 receive-id 字段,表通知中的值为 2;ID 为 8 的用户,因为它在表 A 中的状态为 0。

如何在一个查询中做到这一点?

感谢您的帮助。

最佳答案

Select ID, Name, Status, Notification
FROM TableA A
LEFT JOIN TableB B on B.receive-id = a.ID
 and b.notification <> 2
INNER JOIN tableC C on A.ID = C.Registered-id
WHERE a.status=1
and c.status-reg=7

我认为你想要所有用户,即使他们在表 B 中没有记录,只要状态为 1 和 7。因此我认为需要左连接,并且必须对连接施加限制(除非你想在where子句中处理空值)

关于Mysql连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10269809/

相关文章:

php - 使用 jquery-chosen 和选定的值

mysql - 获取每个客户的第一个订单日期

mysql - 卡在Mysql查询上

mysql - 根据 GROUP BY 对查询进行排序

php - 使行在 MySQL 中处于非事件状态

MySQL AES_Decrypt 不起作用

mysql - 获取ON子句中值为 'x'的行的ID

php - 将 XML 加载到 SQL 时组契约(Contract)名的 XML 字段

mysql - 是否有任何工具可以帮助将 innoDB 表转换为 mysql 集群的 NDB 表?

mysql - 我的表格 View 中只填充了一列