可以的,利用oracle的分析函数ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) 来实现。举例如下:
1、数据准备:
--创建A表
CREATE TABLE qh_a (
filed1 Varchar2(3),
filed2 CHAR(1)
);
--创建B表
CREATE TABLE qh_b (
filed1 CHAR(1),
filed2 VARCHAR(3)
);
--初始化A表与B表的数据。
INSERT INTO qh_a VALUES('001','x');
INSERT INTO qh_a VALUES('002','y');
INSERT INTO qh_b VALUES('x','aaa');
INSERT INTO qh_b VALUES('x','bbb');
INSERT INTO qh_b VALUES('y','ccc');
INSERT INTO qh_b VALUES('y','ddd');
2、查询语句
SELECT CASE
WHEN ROW_NUMBER() OVER(PARTITION BY AFILED2 ORDER BY BFILED2) = 1 THEN AFILED1 ELSE '' END FILED1,
AFILED2,
BFILED2
FROM QH_A A, QH_B B
WHERE AFILED2 = BFILED1
3、结果如下图所示:
SQL如下select a
from test1 a
where aname like (select bid from test2 b where rownum = 1)||'%'
希望能帮到你。第一种查询的语法不全吧,如果补齐了的话,就是先连接的要写到子查询中。
如果理解没错的话,看着觉得应该效果一样。
是这样吗?
SELECT FROM (select from (select from 表1 LEFT JOIN 表2 ON 表1关联表2条件) 表11 LEFT JOIN 表3 ON 表3关联表11条件) 表111 LEFT JOIN 表4 ON 表111关联表4条件 LEFT JOIN 表5 ON 表111关联表5条件 where ……两种方法:
-- 方法1
UPDATE 表2
SET
表2C = (SELECT B FROM 表1 WHERE 表1A = 表2A)
WHERE
EXISTS ( SELECT 1 FROM 表1 WHERE 表1A = 表2A)
-- 方法2
MERGE INTO 表2
USING 表1
ON ( 表2A = 表1A ) -- 条件是 A 相同
WHEN MATCHED THEN UPDATE SET 表2C = 表1B -- 匹配的时候,更新
1、创建测试表;
create table company(companyId number, companyName varchar2(20), contacts varchar2(20));
create table users(userId number, companyId number, userName varchar2(20), userAge number, address varchar2(20));
2、插入测试数据;
insert into company values (1,'腾讯科技','马化腾');
insert into company values (2,'微软公司','鲍威尔');
insert into company values (3,'新浪科技','小明' );
insert into users values (1,1,'jack',23 , '上海');
insert into users values (2,1,'jack2', 23, '上海');
insert into users values (3,2,'jack3', 23, '上海');
insert into users values (4,2,'jack4', 23, '上海');
insert into users values (5,3,'jack5', 23, '上海');
insert into users values (6,3,'jack6', 23, '上海');
3、查询表中数据;
select from users;
4、编写sql,关联两张表;select from users t , company b where tcompanyid = bcompanyid and tcompanyid = 1;
表b中有“单位编号”和“单位名称”的字段,
新建表c “职工姓名”、“人员类别”
select a, b单位名称,c人员类别 from 表a as a
left join 表b as b on ( a"单位编号”=b“单位编号”)
left join 表c as c on ( a“职工姓名"=c“职工姓名" )
这样试试吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)