检查多个表中的单个值并检查响应

时间:2016-08-10 19:38:02

标签: mysql sql database join relational-database

我有一个mysql表mv4w_campaign_delivery_log从那里我将获得Subscriber_id然后在其他三个表中检查它

mv4w_campaign_track_open
mv4w_campaign_track_unsubscribe
mv4w_campaign_track_url

如果上表中出现subscriber_id,则收到true,否则为false ....

例如
订阅者ID存在于mv4w_campaign_track_open表中,但不存在于其他两个表中,因此我只会记住这个,而不是其他两个表,它们将以false响应。

我该怎么写这个查询?我非常困惑研究加入和其他事情,但仍然困惑请帮助。您可以在消息中请求表数据库架构,请帮助我

1 个答案:

答案 0 :(得分:0)

有很多方法,取决于你想要的格式是它是列还是行以及其他东西。但是这里有一个示例,说明如何使用左连接和case语句来查看它们是否是日志表中的相关记录。在将来提问时向我们展示你的尝试!

SELECT
    DISTINCT
    l.Subscriber_id
    ,CASE WHEN o.Subscriber_id IS NULL THEN 0 ELSE 1 END as ExistsInOpen
    ,CASE WHEN un.Subscriber_id IS NULL THEN 0 ELSE 1 END as ExistsInUnsubscrib
    ,CASE WHEN u.Subscriber_id IS NULL THEN 0 ELSE 1 END as ExistsInUrl
FROM
    mv4w_campaign_delivery_log l
    LEFT JOIN mv4w_campaign_track_open o
    ON l.Subscriber_id = o.Subscriber_id
    LEFT JOIN mv4w_campaign_track_unsubscribe un
    ON l.Subscriber_id = un.Subscriber_id
    LEFT JOIN mv4w_campaign_track_url
    ON l.Subscriber_id = u.Subscriber_id