任何人都可以解释如何从表中获取单独的记录?

如何从表中获取单独的记录?

有人为我提供了这个问题:


select * from emp a 
where rowid = /select max/rowid/ from emp b
where a.empno=b.empno/;


可以
rowid

每个插入的线都是独一无二的? 使用的点是什么
max/rowid/

?

为什么我不能在下面使用查询?


select distinct sal, distinct empno from emp;
已邀请:

三叔

赞同来自:

Rowid是独一无二的。

MAX /ROWID/ 在发现不止一行的情况下使用 /duplciate/, 然后它录制了最后 /排序后的最新帖子/.

第一个请求是根据单独的值从表中选择所有行。
柱子。

第二个请求是用自己选择一列
肯定。

这两个请求都会给你不同的答案。 可是等等,
select distinct sal, distinct empno from emp;

- 这是错误的,应该是
select distinct sal, empno from emp;


考虑以下


--
-- DATASET /Table/
--

CREATE TABLE DATASET / VAL1 CHAR / 1 CHAR /,
VAL2 VARCHAR2 / 10 CHAR /,
VAL3 NUMBER /;

INSERT INTO
DATASET / VAL1, VAL2, VAL3 /
VALUES
/ 'b', 'b-details', 2 /;

INSERT INTO
DATASET / VAL1, VAL2, VAL3 /
VALUES
/ 'a', 'a-details', 1 /;

INSERT INTO
DATASET / VAL1, VAL2, VAL3 /
VALUES
/ 'c', 'c-details', 3 /;

INSERT INTO
DATASET / VAL1, VAL2, VAL3 /
VALUES
/ 'a', 'dup', 4 /;

COMMIT;


现在你的第一个问题


SELECT
*
FROM
DATASET A
WHERE
ROWID = /SELECT
MAX / ROWID /
FROM
DATASET B
WHERE
A.VAL1 = B.VAL1/;


VAL1 VAL2 VAL3
---- ---------- ----------
b b-details 2
a as 4
c c-details 3

3 rows selected.


PS:

我选择所有列 /VAL1, VAL2, VAL3/ 一列具有一定条件 /VAL1/, 因此,其他列订购了重复项,因此您看到一行。

现在第二个请求


SELECT DISTINCT VAl1 FROM DATASET;


VAL1
----
b
a
c

3 rows selected.


PS:

在这里,我选择一个单独的列 /VAL1/

奔跑吧少年

赞同来自:

rowid 每行的唯一和所提出的请求将收到每个每行的最新插入条目 empno

不要重复 DISTINCT, 下一个请求 SQL 将返回所有不同的对 sal, empno


select distinct sal, empno from emp;

三叔

赞同来自:

您可以使用 group by 对于各种记录。

选择 sal, empno 的
团体 emp 经过 Sal, empno;

江南孤鹜

赞同来自:

delete from emp a where rowid != /select max/rowid/ from emp b where a.empno=b.empno/;

要回复问题请先登录注册