tài liệu MySQL nói: "Bạn không thể tham chiếu đến bảng TEMPORARY nhiều lần trong cùng một truy vấn".Làm thế nào tôi có thể tham chiếu đến một bảng TEMPORARY nhiều hơn một lần trong cùng một truy vấn?
Tôi biết điều này đã được yêu cầu trước đó. Nhưng tôi không thể tìm thấy một giải pháp cụ thể cho những điều sau đây.
tôi đang làm một sự chọn lọc trước vào một bảng tạm thời
CREATE TEMPORARY TABLE preselection AS SELECT ...;
bây giờ tôi muốn làm một số (khoảng 20 hoặc thậm chí 30) công đoàn
(SELECT FROM preselection ...)
UNION
(SELECT FROM preselection ...)
UNION
......
UNION
(SELECT FROM preselection ...)
tôi có thể làm cho 20 hoặc 30 bản sao của sự chọn lọc trước và làm mỗi lựa chọn trên mỗi bảng nhưng nếu tôi hiểu nó đúng này là giống như gọi truy vấn preselection ở trên trong mỗi SELECT bên trong chuỗi UNION như một truy vấn phụ.
Có cách nào giải quyết vấn đề này không?
Greetings,
chris
Full truy vấn:
CREATE TEMPORARY TABLE preselection AS
(
SELECT id, title, chapter, date2, date, snid, max(score) FROM `movies`
WHERE
(
cluster is not NULL
)
AND
(
`date` <= '2012-02-20 05:20:00'
AND `date` > '2012-02-19 17:20:00'
AND (TIMEDIFF(date, date2) < '12:00:00')
)
GROUP BY cluster
)
UNION
(
SELECT id, title, chapter, date2, date, snid, score FROM `movies`
WHERE cluster IS NULL
AND
(
`date` <= '2012-02-20 05:20:00' AND `date` > '2012-02-19 17:20:00' AND (TIMEDIFF(date, date2) < '12:00:00')
)
);
(SELECT * FROM preselection WHERE snid=1 AND chapter LIKE '#A_OT%'
DESC LIMIT 4)
UNION
…
UNION
(SELECT * FROM preselection WHERE snid=19 AND chapter LIKE '#A_OT%'
LIMIT 4)
UNION
... for each chapter from A to J and every snid from 1 to 19 ...
UNION
(SELECT * FROM preselection WHERE snid=1 AND chapter LIKE '#J_OT%'
LIMIT 4)
UNION
…
UNION
(SELECT * FROM preselection WHERE snid=19 AND chapter LIKE '#J_OT%'
LIMIT 4)
ORDER BY `score` DESC, `date`;
có thể trùng lặp [Truy cập bảng tạm thời nhiều lần trong MySql] (http://stackoverflow.com/questions/4078873/accessing-a -temporary-table-multiple-times-in-mysql) –
Bạn có thể hiển thị truy vấn đầy đủ, thực tế không? Nó có thể giúp chúng tôi đưa ra ý tưởng cho một workaround mà không yêu cầu thêm bảng tạm thời nhiều lần. – JohnFx
Có lẽ đó là một ý tưởng hay. Đây là truy vấn đầy đủ của tôi, tôi thực sự không có ý tưởng làm thế nào để làm điều đó theo một cách khác. (THÊM VÀO BÀI ĐĂNG) –