Mysql join:获取所有与通知类型为0匹配的行


mysql join : get all rows that matches the rows that matches notification type is zero

我的数据库中有两个表

mir_notifications

1.(id (PK)、标题、消息、notifcaton_type)

mir_users_notifications

2.(id、user_id notif_id (FK)队)

notif_idmir_notification表中的id

我想从mir_notification表中获取与mir_users_notifcations表中的user_id和mir_notifications表中的notification_type相匹配的所有行,以及具有notifcation_type0的所有行

(即如果通知类型为零,它将获取所有用户)

下面是我使用的查询

SELECT mir_notifications.* FROM mir_notifications LEFT JOIN mir_users_notification ON mir_notifications.id=mir_users_notification.notif_id WHERE mir_notifications.notfication_type IN (0,2) AND  mir_users_notification.user_id=2

这里我传递通知类型0和1和userid是2,目前这个用户没有特殊的通知,但他有一个共同的通知(即notification_type是0),所以它应该从mir_notification表返回行,匹配notification_type为零,但它将返回空结果

您可以简单地修改WHERE子句。下面的查询将为用户2获取类型为2的所有通知,以及类型为0的所有通知。

SELECT mir_notifications.* FROM mir_notifications LEFT JOIN mir_users_notification ON mir_notifications.id=mir_users_notification.notif_id WHERE (mir_notifications.notfication_type = 2 AND mir_users_notification.user_id=2) OR (mir_notifications.notification_type = 0)