初識Mysql(part19)--我需要知道的3條Mysql語句之組合查詢

學習筆記,以代碼和例子堆砌而成,方便查閱。
參考書籍:《Mysql必知必會》等
要點:UNION、UNION ALL


此Blog會用到下面2個表.


temp_product2:

# id, pr_id, pro_name, price
'1', '1001', 'Dog', '2000'
'2', '1001', 'Cat', '1500'
'3', '1002', 'Bunny', '100'
'4', '1002', 'Bird', '200'
'5', '1003', 'Fish', '50'

temp_product3:

# id, pr_id, pro_name, price
'1', '1002', 'Pen', '60'
'2', '1002', 'Book', '50'
'3', '1002', 'Rule', '10'
'4', '1003', 'Apple', '5'
'5', '1003', 'Orange', '3'
'6', '1005', 'Toy', '5000'

  • 不包含重複行的組合查詢

涉及一個表:

SELECT pr_id, pro_name, price 
FROM temp_product3 WHERE price<50
UNION
SELECT pr_id, pro_name, price 
FROM temp_product3 WHERE pr_id=1002;

查詢結果:

# pr_id, pro_name, price
'1002', 'Rule', '10'
'1003', 'Apple', '5'
'1003', 'Orange', '3'
'1002', 'Pen', '60'
'1002', 'Book', '50'


涉及兩個表:

SELECT pr_id, pro_name, price 
FROM temp_product3 WHERE price<50
UNION
SELECT pr_id, pro_name, price 
FROM temp_product2 WHERE pr_id=1001;

查詢結果:

# pr_id, pro_name, price
'1002', 'Rule', '10'
'1003', 'Apple', '5'
'1003', 'Orange', '3'
'1001', 'Dog', '2000'
'1001', 'Cat', '1500'

  • UNION規則

①UNION必須由兩條或兩條以上的SELECT語句組成,語句之間用關鍵字UNION分隔。

②UNION中的每個查詢必須包含相同的列,表達式或聚集函數。

③列的數據類型不需要完全相同,但必須兼容。


  • 包含重複行的組合查詢
SELECT pr_id, pro_name, price 
FROM temp_product3 WHERE price<50
UNION ALL
SELECT pr_id, pro_name, price 
FROM temp_product3 WHERE pr_id=1002;

查詢結果:

# pr_id, pro_name, price
'1002', 'Rule', '10'
'1003', 'Apple', '5'
'1003', 'Orange', '3'
'1002', 'Pen', '60'
'1002', 'Book', '50'
'1002', 'Rule', '10'

  • 對組合查詢結果進行排序
SELECT pr_id, pro_name, price 
FROM temp_product3 WHERE price<50
UNION
SELECT pr_id, pro_name, price 
FROM temp_product3 WHERE pr_id=1002
ORDER BY price;

查詢結果:

# pr_id, pro_name, price
'1003', 'Orange', '3'
'1003', 'Apple', '5'
'1002', 'Rule', '10'
'1002', 'Book', '50'
'1002', 'Pen', '60'

注意!在用UNION組合查詢時,只能使用一條ORDER BY子句,它必須出現在最後一條SELECT語句之後。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章