Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何为特定列选择最后一个插入值_Sql_Oracle_Select - Fatal编程技术网

Sql 如何为特定列选择最后一个插入值

Sql 如何为特定列选择最后一个插入值,sql,oracle,select,Sql,Oracle,Select,我有两个表格,详情如下: create table pbc( id number(5) primary key, name varchar2(15)); insert into pbc values(2,'product1'); insert into pbc values(3,'product1'); insert into pbc values(4,'product1'); insert into pbc values(5,'product1'); insert into p

我有两个表格,详情如下:

 create table pbc(
 id number(5) primary key,
 name varchar2(15));
 insert into pbc values(2,'product1');
 insert into pbc values(3,'product1');
 insert into pbc values(4,'product1');
 insert into pbc values(5,'product1');
 insert into pbc values(6,'product1');
 insert into pbc values(7,'product1');
另一张桌子是

 create table zxy(
 id number(5),
 price number(10));
 alter table zxy add(constraint zxyid_fk FOREIGN KEY (id) references  pbc(id));
 insert into zxy values(2,67);
 insert into zxy values(3,34);
 insert into zxy values(3,21);
 insert into zxy values(4,65);
 insert into zxy values(5,32);
 insert into zxy values(5,23);
 insert into zxy values(5,10);
下面给出了第二个表select数据

Id   price
2    67
3    34
3    21
4    65
5    32
5    23
5    10
现在我必须选择最后一个插入值,例如

id  price 
2   67
3   21
4   65
5   10

我不想要最高价格我想要最后一次插入价格基于要求,我看不到第一个表的任何用法。尝试:

SELECT Z.ID, B.PRICE
FROM
(
    SELECT A.ID, MAX(A.RNUM) AS LAST_INSERTED
    FROM
    (SELECT ID, PRICE, ROW_NUMBER() OVER (PARTITION BY ID) AS RNUM FROM ZXY) A
    GROUP BY A.ID
) Z
INNER JOIN
(SELECT ID, PRICE, ROW_NUMBER() OVER (PARTITION BY ID) AS RNUM FROM ZXY) B
ON Z.ID = B.ID AND Z.LAST_INSERTED = B.RNUM;

根据需求,我看不到第一个表的任何用法。尝试:

SELECT Z.ID, B.PRICE
FROM
(
    SELECT A.ID, MAX(A.RNUM) AS LAST_INSERTED
    FROM
    (SELECT ID, PRICE, ROW_NUMBER() OVER (PARTITION BY ID) AS RNUM FROM ZXY) A
    GROUP BY A.ID
) Z
INNER JOIN
(SELECT ID, PRICE, ROW_NUMBER() OVER (PARTITION BY ID) AS RNUM FROM ZXY) B
ON Z.ID = B.ID AND Z.LAST_INSERTED = B.RNUM;

无法确定最后插入了哪个值。对于ID 3,有两个价格34和21,但没有说明何时插入记录。表中的数据没有固有的顺序;这些记录被认为是无序的

您需要一个日期或一些指示插入顺序的内容


如果表已经以这种方式存在,则会丢失,因为您无法知道哪些值是当前值,哪些值已过期。如果这是一个新表,并且您只计划稍后填充它,那么添加一个日期和一个触发器,以便在插入时用sysdate填充该日期。

无法确定最后插入的是哪个值。对于ID 3,有两个价格34和21,但没有说明何时插入记录。表中的数据没有固有的顺序;这些记录被认为是无序的

您需要一个日期或一些指示插入顺序的内容


如果表已经以这种方式存在,则会丢失,因为您无法知道哪些值是当前值,哪些值已过期。如果这是一个新表,您只打算以后再填充它,那么在插入时添加一个日期和一个触发器,用sysdate填充该日期。

可能重复的Use SQL join one to Many可能重复的Use SQL join one to Many如果我在插入第二个表时添加了新列并插入sysdate(zxy)然后我可以选择?如果记录有日期,有几种方法可以选择最后的价格。一个是Oracle的
保持最后一个
,另一个是标准SQL的
行数
。我是否要更新我的答案并向您展示如何或您希望自己查找?如果我在插入第二个表(zxy)时添加了新列并插入了系统日期,那么我可以选择?如果记录有日期,有几种方法可以选择最后一个价格。一个是Oracle的
保持最后一个
,另一个是标准SQL的
行数
。我是否要更新我的答案,并向您展示如何或您希望自己查找?