有人知道为什么这对两个表别名“ x”都有效吗?
Select x.company_name
,x.employee_name
FROM company x
JOIN employee x ON x.company_id = 5
我知道ID为5的JOIN没有任何意义…
感谢您的教训!
下面的前两个查询是等效的。在连接的ON
子句中,表别名x
仅指使用该别名的最后一个表,因此仅employee
表受到限制。
在SELECT
和WHERE
表达式中,x
别名引用两个表-因此,列名是唯一的,则可以成功引用它们,但是,在列名相同的ORA-00918: column ambiguously defined
情况下,oracle会引发异常(如果删除了注释,则在查询3中会发生这种情况)。
我找不到任何文档,但是看起来很像个错误。
SQL小提琴
Oracle 11g R2架构设置 :
CREATE TABLE employee (
company_id NUMBER(3),
employee_name VARCHAR2(20)
);
CREATE TABLE company (
company_id NUMBER(3),
company_name VARCHAR2(20)
);
INSERT INTO employee VALUES ( 4, 'Four Emp' );
INSERT INTO employee VALUES ( 5, 'Five Emp' );
INSERT INTO employee VALUES ( 6, 'Six Emp' );
INSERT INTO company VALUES ( 4, 'Four Company' );
INSERT INTO company VALUES ( 5, 'Five Company' );
INSERT INTO company VALUES ( 6, 'Six Company' );
查询1 :
SELECT *
FROM company x
JOIN
employee x
ON x.company_id = 5
结果 :
| COMPANY_ID | COMPANY_NAME | EMPLOYEE_NAME |
|------------|--------------|---------------|
| 5 | Four Company | Five Emp |
| 5 | Five Company | Five Emp |
| 5 | Six Company | Five Emp |
查询2 :
SELECT *
FROM company x
CROSS JOIN
(SELECT * FROM employee WHERE company_id = 5) x
结果 :
| COMPANY_ID | COMPANY_NAME | EMPLOYEE_NAME |
|------------|--------------|---------------|
| 5 | Four Company | Five Emp |
| 5 | Five Company | Five Emp |
| 5 | Six Company | Five Emp |
查询3 :
SELECT --x.company_id,
x.company_name,
x.employee_name
FROM company x
CROSS JOIN
(SELECT * FROM employee WHERE company_id = 5) x
结果 :
| COMPANY_NAME | EMPLOYEE_NAME |
|--------------|---------------|
| Four Company | Five Emp |
| Five Company | Five Emp |
| Six Company | Five Emp |
问题内容: 我有下表,我必须从中获取非唯一行 我想获取column的所有行,至少在两行中具有相同的值。 上表查询的输出必须为 我尝试了以下请求,但均未成功: 问题答案: 尝试这个: 您发布的数据的结果:
问题内容: 我想向现有表添加复杂的唯一键。主要从4个字段包含(,,,)。但是表具有非唯一行。我知道我可以删除所有重复的日期,然后再添加复杂的密钥。 也许存在另一种无需搜索所有重复数据的解决方案。(例如添加唯一的忽略等)。 我搜索了UPD,如何删除重复的mysql行-我认为这是一个很好的解决方案。 仅使用MySQL查询删除重复项? 问题答案: 您可以按照yAnTar的建议进行 要么 您可以添加约束
我正在编写一个方法,将一条记录插入或更新到mysql表中,只有当字段“sample_time”大于表中当前记录的这个值时,才会进行更新。下面是我现在想做的事情。 但是我不知道如何通过记录的唯一键来选择,而不考虑确切的字段名称或字段编号。所以我的问题是: 我如何实现“按记录的唯一键选择,而不考虑确切的字段名称或字段编号” 或者,我如何在jooq中使用条件为重复更新的条件 提前感谢您的帮助!
问题内容: 我有一个MySQL表,其中包含以下类型的信息: 这是我用来从该表获取数据的脚本示例: 该脚本显示表格中的每个日期,例如 我只想显示唯一的日期,例如 问题答案: 在MySQL中使用DISTINCT运算符:
问题内容: 假设我有一张桌子: 我需要获取仅提及一次的名称(在本例中为:乍得和蒂姆)。查询的是什么?谢谢。 问题答案: 您可以使用: Rextester演示
问题内容: 我得到错误 我不知道这是怎么回事。 问题答案: 尝试