MySQL聯合查詢分頁
阿新 • • 發佈:2019-02-08
有兩個表table_A, table_B:
pro:
id | pro_name | creator_id | create_time |
---|---|---|---|
1 | pro1 | 101 | 2017-5-1 |
2 | pro2 | 103 | 2017-3-1 |
3 | pro3 | 103 | 2017-2-3 |
4 | pro6 | 116 | 2017-6-3 |
pro_users:
id | pro_id | user_id |
---|---|---|
1 | pro4 | 123 |
2 | pro1 | 132 |
3 | pro6 | 103 |
描述 :
表pro為使用者建立專案的資訊表,表pro_users為與專案相關聯的專案-使用者表。
需求:
需要查詢表A中某一建立者(例如:creator=103)建立的專案資訊,以及和此使用者相關聯的專案資訊,並分頁實現。
MySQL實現:
SELECT * FROM (
SELECT * FROM pro WHERE id IN(
SELECT id FROM pro WHERE creator=103
UNION
SELECT pro_id FROM pro_users WHERE user_id=103
)
) tbl
LIMIT 100 ,10;
查詢結果:
id | pro_name | creator_id | create_time |
---|---|---|---|
2 | pro2 | 103 | 2017-3-1 |
3 | pro3 | 103 | 2017-2-3 |
4 | pro6 | 116 | 2017-6-3 |
聯合查詢容易出的錯誤:
ERROER:The used SELECT statements have a different number of columns
原因:
union 是聯合查詢的意思,故要求查詢結構有著相同的結構,比如select a,b from TA union select 1,2,3,4,5 from Tb 肯定報錯!就算TA 與TB結構相同 但注意這裡只取Ta的查詢結果a,b 也就是列結構只有2個 而後面的Tb取的結構有5個自然報錯。