我想加入三個表,然後將它們聯合起來。兩個連接的表在兩個聯合查詢中是相同的,並且這樣連接兩次似乎是一種浪費。見下面的例子。這最好的表現如何?由於有效地結合兩個查詢都有一個共同的內部聯接
SELECT t1.c1,t2.c1,t3.c1
FROM audits AS t1
INNER JOIN t2 ON t2.t1_id=t1.id
INNER JOIN t3 ON t3.t1_id=t1.id
WHERE t2.fk1=123
UNION
SELECT t1.c1,t2.c1,t4.c1
FROM audits AS t1
INNER JOIN t2 ON t2.t1_id=t1.id
INNER JOIN t4 ON t4.t1_id=t1.id
WHERE t2.fk1=123
ORDER BY t1.fk1 ASC
這種解決方案很好 – zerkms 2013-04-09 23:34:19
@zerkms是的,它的工作原理,但你做兩次相同的查詢。它可以做一次子查詢嗎?在同一個t1/t2內部聯接中對T3和T4使用外部聯接將起作用,但不會單獨提供記錄。 – user1032531 2013-04-09 23:52:27
我同意@zerkms。如果你關心性能,考慮使用[觀點](http://dev.mysql.com/doc/refman/5.6/en/views.html)(; – 2013-04-09 23:55:13