SELECT *
FROM car_t
JOIN ( SELECT driver_id, gender, first_name,last_name
FROM driver_t
WHERE gender = 'Male');我收到一个错误,因为我没有使用Alias。有人能帮我一下吗?谢谢!我需要使用子查询执行连接语句。
发布于 2020-03-28 23:28:53
SQL中的一个常见要求是每个派生表都必须有一个别名(尽管有些数据库对此并不严格)。
您的子查询会生成一个派生表,因此您需要为该表添加别名:
SELECT *
FROM car_t c
JOIN (
SELECT driver_id, gender, first_name,last_name FROM driver_t WHERE gender = 'Male'
) d ON ???
--^ table alias备注:
JOIN条件;它应该出现在ON关键字之后,即我添加到查询中的
SELECT
c.*,
d.driver_id,
d.gender,
d.first_name,
d.last_name
FROM car_t c
JOIN driver_t d ON ???
WHERE d.gender = 'Male'发布于 2020-03-28 23:29:53
错误消息指的是需要名称的“派生表”(别名为"subquery")
SELECT *
FROM car_t
JOIN (
SELECT driver_id, gender, first_name,last_name
FROM driver_t
WHERE gender = 'Male'
) as x --<< the alias 但这只会导致下一个错误,因为您没有联接条件。
所以你需要像这样的东西:
SELECT *
FROM car_t
JOIN (
SELECT driver_id, gender, first_name,last_name
FROM driver_t
WHERE gender = 'Male'
) as x on x.??? = car_t.??? 您需要将???替换为将两个表链接在一起的列。
但无论如何,您并不真正需要派生表。您可以将其简化为
SELECT
FROM car_t
JOIN driver_t as x on x.??? = car_t.???
WHERE x.gender = 'Male';https://stackoverflow.com/questions/60902678
复制相似问题