功能:
使用mysql中union all 將2個表中的數據查詢結果合並到一個返回結果中。再針對結果統一排序操作等。(注:2個表返回的列名必須一致)
語句如下:
SELECT
表1.字段,
表2.字段,
...
FROM
(SELECT
表.字段1,
表.字段2
FROM
表
WHERE
條件
) 表1
UNION ALL
(SELECT
表.字段1,
表.字段2
FROM
表
WHERE
條件
) 表2
WHERE
相關條件
ORDER BY
排序條件等
原文:https://blog.csdn.net/u013109978/article/details/69230196
mysql sql語句多表合並UNION ALL和UNION
select d1.ID,CAST(d1.ID AS CHAR) AS intId, d1.CODE_TYPE, d1.CODE, d1.CODE_IMG, d1.VALUE from m_dict_code d1 where d1.CODE_TYPE in('USER_TYPE','addSupers') UNION select 0,v.ID,v.TYPE,v.`CODE`,v.DESCRIPTION,v.VALUE_STRING from m_variable as v where v.type='tequan' limit 1,20
說明:
1.CAST (expression AS data_type)字段類型轉換函數
CAST (表名.字段名 AS 類型) 注意: 1.mysql int轉varchr會出現問題 錯誤: CAST (表名.字段名 AS varchar) 正確:CAST (表名.字段名 AS char)或concat(d1.ID,'') 說明: 將Int 轉為varchar經常用 concat函數,比如concat(8,’′) 將varchar 轉為Int 用 cast(a as signed)
2.UNION和UNION all 多表合並函數
問題:
1.兩表字段類型不一致 用cast或concat函數解決
2.兩表列屬性數量不一致問題 select后跟相同類型字段值 (int類型)0或(字符串)''解決問題
3.(自動去重)UNION (允許重復的值)UNION all
mysql api:http://www.mysqlab.net/docs/view/refman-5.1-zh/chapter/functions.html