T1
SCHOOL STUDENT TEACHER
1 1 A
1 2 B
1 3 B
1 4 B
T2
SCHOOL STUDENT TEACHER
2 7 A
2 6 A
2 8 B
2 9 B
T3
SCHOOL TEACHER ID
1 A FOX
1 B CAT
2 A DOG
2 B MOUSE
T4
SCHOOL STUDENT TEACHER ID
1 1 A FOX
1 2 B CAT
1 3 B CAT
1 4 B CAT
2 7 A DOG
2 6 A DOG
2 8 B MOUSE
2 9 B MOUSE
我有 T1 T2 T3 我希望 UNION T1 和 T2 然后 JOIN T3 例如:
SELECT * FROM T1
UNION
(SELECT * FROM T2)
JOIN
(SELECT SCHOOL, TEACHER, ID
WHERE SCHOOL != 10
FROM T3)
但我收到錯誤“意外加入”
uj5u.com熱心網友回復:
JOIN 是 SELECT 陳述句的一部分,而 UNION 不是。
因此,您需要將 UNION 作為 SELECT 陳述句的一部分
select * from (
SELECT * FROM T1
UNION
SELECT * FROM T2) q1
JOIN
(SELECT SCHOOL, TEACHER, ID
FROM T3
WHERE SCHOOL != 10) q2
on /* here goes JOIN condition you need, like q1.school = q2.school*/
請注意:
- 您的示例中還有另一個語法錯誤: FROM 總是在 SELECT 之后和 WHERE 之前
- UNION 將追加結果并消除運行速度比 UNION ALL 慢的重復行。后者不會檢查是否有重復的行。因此,如果您確定結果中不會有任何重復,或者如果您是否得到重復無關緊要,您可以使用 UNION ALL
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/516146.html
標籤:mysqlsql加入联盟
