如何从没有公共列的 2 个表中按升序打印两列

How to print two columns in ascending order from 2 tables without common column

这个问题是在面试时问我的,我无法给出答案我尝试了所有解决方案互联网都没有在 oracle 中给出所需的输出 sql input table table A 有 ID 列,table B 有 Value 列 ``table一个` ID(table A) 值(table B)
1 电子
2 C
3乙
4个
5D

output table wants

ID 值

1个
2乙
3 C
4D
5 E


这似乎只是一个 ROW_NUMBER window 函数 -

SELECT ROW_NUMBER() OVER(ORDER BY value) id, value
  FROM your_table
 ORDER BY value;

您可以同时订购数字 table 和字母 table,然后将数字 table 与字母 table 连接到字母的行号 table:

SELECT numbers.id, letters.value FROM
(SELECT id
FROM tableA) numbers
JOIN 
(SELECT ROW_NUMBER() OVER(ORDER BY value) id, value
FROM tableB ) letters
ON numbers.id = letters.id
ORDER BY numbers.id, letters.id

您可以使用 ASCII() 函数匹配表格,作为 idvalue 列之一的排序,同时使用 CROSS JOIN 例如

SELECT id, value
  FROM tableA 
 CROSS JOIN tableB
 WHERE ASCII(value)-64 = id  
 ORDER BY id

Demo