选择带有联合和联接的语句,并添加一个不同的字段来定义行类型

时间:2014-10-29 15:15:27

标签: mysql sql select join union

我遇到查询问题,应该得到喜欢和回复,它有相同类型的字段,所以我可以通过1个查询来阅读它们,这对我的客户端应用程序来说是最好的..有没有人知道如何添加像第一个选择语句的字段,如thisisareply =' x'第二个是thisisareply =''

这是我目前所拥有的:

SELECT 
        a.alerts,a.title,r.id as replyid, r.date_added as replydatum,
        u.id as user_id,u.username,u.profile_picture 
    FROM 
        `alerts` a
    LEFT JOIN 
        `reply` r 
        ON 
            a.alerts = r.alert_id 
    LEFT JOIN 
        `users` u 
        ON 
            u.id = r.user_id 
    WHERE 
        a.user_id = '2' 
    GROUP BY 
        replyid 

UNION 

SELECT 
        a.alerts,a.title,i.id as interactionid, i.date_added as likedatum
        ,u.id as user_id,u.username,u.profile_picture 
    FROM 
        `alerts` a 
    LEFT JOIN 
        `interactions` i 
        ON 
            a.alerts = i.alert_id 
    LEFT JOIN 
        `users` u 
        ON 
            u.id = i.user_id 
    WHERE 
        a.user_id = '2' 
    GROUP BY 
        likedatum

2 个答案:

答案 0 :(得分:1)

是的,您可以使用'x'和null

定义别名thisisareply
SELECT 
        a.alerts,a.title,r.id as replyid, r.date_added as replydatum,
        u.id as user_id,u.username,u.profile_picture , 'x' AS thisisareply 
    FROM ....
UNION 
SELECT 
        a.alerts,a.title,i.id as interactionid, i.date_added as likedatum
        ,u.id as user_id,u.username,u.profile_picture, null as thisisareply 
    FROM ...

答案 1 :(得分:0)

尝试这样的事情:

SELECT 'something' as ReplyType,
    a.alerts,a.title,r.id as replyid, r.date_added as replydatum,
    u.id as user_id,u.username,u.profile_picture 
FROM 
    `alerts` a
LEFT JOIN 
    `reply` r 
    ON 
        a.alerts = r.alert_id 
LEFT JOIN 
    `users` u 
    ON 
        u.id = r.user_id 
WHERE 
    a.user_id = '2' 
GROUP BY 
    replyid 

UNION 

SELECT 'something else' as ReplyType,
    a.alerts,a.title,i.id as interactionid, i.date_added as likedatum
    ,u.id as user_id,u.username,u.profile_picture 
FROM 
    `alerts` a 
LEFT JOIN 
    `interactions` i 
    ON 
        a.alerts = i.alert_id 
LEFT JOIN 
    `users` u 
    ON 
        u.id = i.user_id 
WHERE 
    a.user_id = '2' 
GROUP BY 
    likedatum
相关问题