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...