我的数据库中有两个表
mir_notifications1.(id (PK)、标题、消息、notifcaton_type)
mir_users_notifications2.(id、user_id notif_id (FK)队)
notif_id
为mir_notification
表中的id
我想从mir_notification
表中获取与mir_users_notifcations
表中的user_id和mir_notifications
表中的notification_type
相匹配的所有行,以及具有notifcation_type
是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 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)