我的选择语句如下:
Select column1, column2
From Table1
Group By column2
column1
是一个CLOB,我想接收一个属于一个组的值。我知道他们都是一样的,所以我得到哪一个并不重要。我尝试了MIN
和MAX
等函数,但它们不接受CLOB作为类型。
要明确我不想聚合CLOB只选择其中一个。
这是实际select语句的简化,并且GROUP-BY子句是必需的。
所以这个数据:
column1 column2
qwerty 1
qwerty 1
asdfgh 2
asdfgh 2
我想得到:
qwerty 1
asdfgh 2
知道如何做到这一点?
答案 0 :(得分:6)
CLOB
值不能用于分组或distinct
子句内。
您唯一的机会是将CLOB
转换为varchar,但这意味着您无法比较列的完整内容(注意:那些是列,而不是行)。如果您确定所有CLOB值都小于8000字节,则可以使用以下内容:
select min(dbms_lob.substr(column1)), column2
from foo
group by column2;
答案 1 :(得分:0)
您可以使用子查询。 添加唯一列ID,然后:
SELECT t1.col2,t2.col1
FROM
(SELECT max(ID) as IDM, col2 FROM Table1 GROUP BY col2) t1
LEFT JOIN
Table1 t2
ON t1.IDM=t2.ID
答案 2 :(得分:-1)
尝试这样的事情:
SELECT DISTINCT row1, row2 FROM Table1;