Sql 选择Distinct From Table-两列不应重复
例如,如何针对包含这些记录的表a进行选择Sql 选择Distinct From Table-两列不应重复,sql,oracle,Sql,Oracle,例如,如何针对包含这些记录的表a进行选择 |Column1|Column2| | A |F | | A | G | | B |G | | B |H | | C |H | | D |H | | E |I | 我的预期结果是: |Column1 |Column2| | A | F | | B | G | | C | H |
|Column1|Column2|
| A |F |
| A | G |
| B |G |
| B |H |
| C |H |
| D |H |
| E |I |
我的预期结果是:
|Column1 |Column2|
| A | F |
| B | G |
| C | H |
| E | I |
所有列中都应有唯一的值
我可以为此使用什么查询语句
谢谢请尝试:
select
MIN(Column1) Column1,
Column2
from(
select
Column1,
MIN(Column2) Column2
from YourTable
group by Column1
)x group by Column2
order by 1
它在这种情况下不起作用
create table YourTable (Column1 varchar2(10),
Column2 varchar2(10));
insert into YourTable values ('B','F');
insert into YourTable values ('B','G');
insert into YourTable values ('B','H');
insert into YourTable values ('C','F');
insert into YourTable values ('C','G');
insert into YourTable values ('C','H');
insert into YourTable values ('D','F');
insert into YourTable values ('D','G');
insert into YourTable values ('D','H');
我的期望是
B、F
CG
D H
但我只有
B、F
非常感谢
SELECT a.val, b.val FROM
(
SELECT val, rownum as rno
FROM
(
SELECT distinct column1 as val
FROM YourTable
)) a,
(
SELECT val, rownum as rno
FROM
(
SELECT distinct column2 as val
FROM YourTable
)) b
WHERE a.rno = b.rno
ORDER BY 1
/
VAL VAL_1
-----------
B F
C G
D H
或
因此,您希望显示所有column1值和所有column2值,然后对它们进行过滤,以便仍然显示所有值,但没有一个是重复的?这是一个非常奇怪的要求。为了保证您必须编写一个循环所有组合的过程,直到它成功或结束而不成功。有没有一种方法只允许查询?如果其他方法都失败了,我计划用Java来做。但我希望尽可能只通过查询来处理它。正如我已经说过的,您的请求看起来很奇怪,您可能需要仔细考虑一下。给出所有值a、B、C、D……的列表很容易,但使用给定的组合并尝试删除这一行或那一行,直到最终结果包含所有值,但没有重复值,只能通过尝试和错误来完成-可能需要一些模糊逻辑的帮助。SQL无法为您做任何事情。请删除此帖子。本节仅用于回答问题。若要评论或要求作者澄清,请在其帖子下方留下评论。此外,您还可以编辑您的问题,并使用此处发布的数据更改示例数据。
select column1 as val from YourTable
UNION
select column2 from YourTable
VAL
-----
B
C
D
F
G
H