子查詢得到的表中有同名字段的解決方案

2021-09-27 12:03:34 字數 2150 閱讀 7255

create table job( -- 職務表

id int primary key auto_increment,

jname varchar(20), -- 職務名

description varchar(50) -- 職務描述

);insert into job ( jname ,description)

values('董事長', '管理整個公司,接單'),

('經理', '管理部門員工'),

('銷售員', '向客人推銷產品'),

('文員', '使用辦公軟體');

create table emp( -- 員工表

id int primary key auto_increment,

ename varchar(50), -- 名字

job_id int, -- 職務id 外來鍵

mgr int , -- 上級領導

join_date date, -- 入職日期

salary decimal(7,2), -- 工資

bonus decimal(7,2), -- 獎金

constraint emp2_jobid_ref_job_id_fk foreign key (job_id) references job(id)

);insert into emp(id,ename,job_id,mgr,join_date,salary,bonus) values

(1001,'孫悟空',4,1004,'2000-12-17','8000.00',null),

(1002,'盧俊義',3,1006,'2001-02-20','16000.00','3000.00'),

(1003,'林沖',3,1006,'2001-02-22','12500.00','5000.00'),

(1004,'唐僧',2,1009,'2001-04-02','29750.00',null),

(1005,'李逵',4,1006,'2001-09-28','12500.00','14000.00'),

(1006,'宋江',2,1009,'2001-05-01','28500.00',null),

(1007,'劉備',2,1009,'2001-09-01','24500.00',null),

(1008,'豬八戒',4,1004,'2007-04-19','30000.00',null),

(1009,'羅貫中',1,null,'2001-11-17','50000.00',null),

(1010,'吳用',3,1006,'2001-09-08','15000.00','0.00'),

(1011,'沙僧',4,1004,'2007-05-23','11000.00',null),

(1012,'李逵',4,1006,'2001-12-03','9500.00',null),

(1013,'小白龍',4,1004,'2001-12-03','30000.00',null),

(1014,'關羽',4,1007,'2002-01-23','13000.00',null);

有以上一對多的兩張表 , 我們進行如下查詢:

-- 查詢經理的全部資訊,一些顯示欄位我沒列出來,因為無關本文)

select * from ( select e.id, j.id , j.jname from emp e join job j on e.job_id=j.id ) as h where h.jname='經理'

結果會報錯, 如下:

錯誤**: 1060

duplicate column name 'id'

分析原因: 子查詢得到的表中有兩個字段同名,這個例子裡就是job表中id ,和emp表中的id 

子查詢結果表作為主查詢的表,主查詢無法識別兩個id,於是報錯,說表中有重複的欄位名 id

解決方案:在子查詢的顯示結果集中,給其中乙個id取別名,  這樣主查詢就能分辨了

select * from  ( select e.id as eid , j.id , j.jname from emp e join job j on e.job_id=j.id ) as h where h.jname='經理'

sql 如何把查詢得到的結果如何放入乙個新錶中

如何把這個查詢到的結果放到一張新錶中?2014 03 13 15 26 提問者採納 表已經存在 insert into 表名 列名1.列名n select 列名1.列名n from 表 where 條件 表不存在.oracle create table 新表明 as select 列名1.列名n f...

對伺服器各種狀態下的連線數分組並查詢得到結果

netstat n awk tcp end print a,s a netstat n awk tcp end 狀態描述 closed 無連線是活動的或正在進行 listen 伺服器在等待進入呼叫 syn recv 乙個連線請求已經到達,等待確認 syn sent 應用已經開始,開啟乙個連線 est...

查詢資料庫中有哪些表及這些表的資訊

select case when a.colorder 1 then d.name else end n 表名 a.colorder n 字段序號 a.name n 欄位名 case when columnproperty a.id,a.name,isidentity 1 then else end...