SELECT COUNT(*)
FROM (
SELECT cv.*
FROM study_card AS scd
LEFT JOIN stuc_course AS sce ON scd.id=sce.stuc_id
LEFT JOIN course_view AS cv ON cv.id=sce.course_id
WHERE scd.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND scd.is_used=1
UNION
SELECT cv.*
FROM orders AS o
LEFT JOIN course_view AS cv ON o.course_id=cv.id
WHERE o.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND o.is_finished=1
)
这样写会报错。报的错误是:Every derived table must have its own alias
,意思是:每个派生出来的表都需要有一个别名,所以改为如下:
SELECT COUNT(*)
FROM (
SELECT cv.*
FROM study_card AS scd
LEFT JOIN stuc_course AS sce ON scd.id=sce.stuc_id
LEFT JOIN course_view AS cv ON cv.id=sce.course_id
WHERE scd.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND scd.is_used=1
UNION
SELECT cv.*
FROM orders AS o
LEFT JOIN course_view AS cv ON o.course_id=cv.id
WHERE o.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND o.is_finished=1
) table_a
就不会报错了。