2016-10-03 249 views
3

我想爲我的語句的第一個聯合的所有結果和下一個聯合的'enabled' = 0添加虛擬列'enabled' = 1。這是我迄今爲止的聲明...Mysql:如何在UNION中添加虛擬列

SELECT p.* 
FROM member_permissions mp 
JOIN permissions p ON p.permission_id = mp.permission_id 
WHERE member_id = 1 
UNION 
SELECT pgp 
FROM member_permissions mp 
JOIN permission_link pl ON pl.permission_group_id = mp.permission_group_id 
JOIN permissions pgp ON pgp.permission_id = pl.permission_id 
WHERE member_id = 1 
UNION  // this will have enabled = 0 //  
SELECT * 
FROM permissions   
+0

爲了優化目的,請檢查您是否可以使用UNION ALL而不是UNION。 UNION需要做重複檢查,ALL變種不需要。 – Cine

回答

3

只要指定新的列作爲源:

select column1, column2, ..., 1 as enabled 
from .... 
union 
select column1, column2, ..., 0 as enabled 
from .... 

只是注意,你必須使用相同的列數具有相同數據使用union時的類型。

+0

包括'''作爲啓用'在中'選擇' – varontron

+0

謝謝。現在我有另一個問題http://stackoverflow.com/questions/39824218/mysql-dont-show-duplicate-result-onselect – joejoeso