Tôi muốn thực hiện một số tự tham gia trên bảng tạm thời so với bảng có nguồn gốc.
CREATE TEMPORARY TABLE foo AS SELECT ...;
SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;
so với sử dụng một bảng có nguồn gốc, nơi bạn phải viết toàn bộ truy vấn hai lần:
SELECT ...
FROM (SELECT ...)
JOIN (SELECT ...) ON ...conditions...;
Nhưng giải pháp khác là sử dụng biểu thức bảng chung mà là hơi khác nhau từ các bảng có nguồn gốc:
WITH foo AS (SELECT ...)
SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;
Miễn là bạn sử dụng nhãn hiệu cơ sở dữ liệu hỗ trợ cú pháp này (Microsoft, Oracle, IBM, PostgreSQL).
Nguồn
2010-07-31 00:52:02
Đó [câu hỏi được gắn thẻ cho SQL Server] (http : //stackoverflow.com/questions/2326395/which-one-have-better-performance-derived-tables-or-temporary-tables), vì vậy thông tin cần được xem xét cụ thể cho nó và không phải cho tất cả các cơ sở dữ liệu. –