在MySQL中,可以通過下面兩種方法來實現類似于WITH的功能:
1. 使用派生表(Derived Table) 派生表是從一個SELECT語句中派生出來的表,可以讓我們在后續的查詢中使用這個表。使用派生表可以達到類似WITH的效果。 SELECT a.id, a.name, b.total FROM user a INNER JOIN ( SELECT user_id, SUM(score) AS total FROM score GROUP BY user_id ) b ON a.id = b.user_id ORDER BY total DESC;
上面的查詢中,我們使用了派生表b,它是從score表中派生出來的,包含每個用戶的總分數。然后我們再將user表和b表進行關聯,輸出用戶的ID、姓名和分數。
2. 使用變量(Variable) MySQL中的變量可以讓我們在查詢中存儲和傳遞數據。通過使用變量,我們可以將較為復雜的查詢分步進行,達到類似WITH的效果。 SET @total_score := ( SELECT SUM(score) FROM score WHERE user_id = 1 ); SELECT user.id, user.name, @total_score AS total FROM user WHERE user.id = 1;
上面的查詢中,我們使用了@total_score變量來存儲用戶1的總分數。首先我們單獨查詢了用戶1的總分數,并將結果存儲在變量中。然后我們再使用這個變量來輸出用戶的ID、姓名和總分數。