首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初学者别名

初学者别名
EN

Stack Overflow用户
提问于 2020-03-28 23:25:04
回答 2查看 17关注 0票数 1
代码语言:javascript
复制
SELECT *
FROM car_t
JOIN ( SELECT driver_id, gender, first_name,last_name
 FROM driver_t 
 WHERE gender = 'Male');

我收到一个错误,因为我没有使用Alias。有人能帮我一下吗?谢谢!我需要使用子查询执行连接语句。

EN

回答 2

Stack Overflow用户

发布于 2020-03-28 23:28:53

SQL中的一个常见要求是每个派生表都必须有一个别名(尽管有些数据库对此并不严格)。

您的子查询会生成一个派生表,因此您需要为该表添加别名:

代码语言:javascript
复制
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关键字之后,即我添加到查询

中的

  • 子查询实际上在这里不是必需的;您可以只连接表,然后选择所需的列

代码语言:javascript
复制
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'
票数 0
EN

Stack Overflow用户

发布于 2020-03-28 23:29:53

错误消息指的是需要名称的“派生表”(别名为"subquery")

代码语言:javascript
复制
SELECT *
FROM car_t
JOIN ( 
  SELECT driver_id, gender, first_name,last_name
  FROM driver_t 
  WHERE gender = 'Male'
) as x --<< the alias 

但这只会导致下一个错误,因为您没有联接条件。

所以你需要像这样的东西:

代码语言:javascript
复制
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.??? 

您需要将???替换为将两个表链接在一起的列。

但无论如何,您并不真正需要派生表。您可以将其简化为

代码语言:javascript
复制
SELECT 
FROM car_t
  JOIN driver_t as x on x.??? = car_t.??? 
WHERE x.gender = 'Male';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60902678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档