MySQL trước phiên bản 8.0 không hỗ trợ điều khoản WITH (CTE trong cách nói của SQL Server; Subquery Factoring trong Oracle), vì vậy bạn chỉ cần sử dụng:
- Bảng TẠM THỜI
- Bảng ĐÃ KHỞI KIỆN
- chế độ xem nội tuyến (hiệu quả là mệnh đề WITH đại diện - chúng có thể hoán đổi cho nhau)
Yêu cầu về tính năng này có từ năm 2006.
Như đã đề cập, bạn đã cung cấp một ví dụ kém - không cần thực hiện chọn phụ nếu bạn không thay đổi đầu ra của các cột theo bất kỳ cách nào:
SELECT *
FROM ARTICLE t
JOIN USERINFO ui ON ui.user_userid = t.article_ownerid
JOIN CATEGORY c ON c.catid = t.article_categoryid
WHERE t.published_ind = 0
ORDER BY t.article_date DESC
LIMIT 1, 3
Đây là một ví dụ tốt hơn:
SELECT t.name,
t.num
FROM TABLE t
JOIN (SELECT c.id
COUNT(*) 'num'
FROM TABLE c
WHERE c.column = 'a'
GROUP BY c.id) ta ON ta.id = t.id