SQL尊重IN子句中的顺序行

时间:2012-04-11 18:07:15

标签: sql oracle

我有一张这样的表:

CREATE TABLE A
(
pk int,
fk int,
col text,
sort_index int
)

我有这样的查询:

select b.fk from A where A.col in ('a','b', 'c')
group by b.fk

但我只希望b.fk按顺序包含IN子句中的所有元素(使用列sort_index)。

这可能与SQL有关吗?如果是这样,怎么样? (Oracle)的

例如,我有这个数据

pk      fk    col    sort_index
1       1     a      1
2       1     c      2
3       1     b      3
4       2     a      1
5       2     b      2
6       2     c      3

我只想要fk 2因为它拥有IN中的所有col并尊重命令。

1 个答案:

答案 0 :(得分:0)

如果您可以在执行查询之前修改IN值,则此查询可能有效。


SELECT DISTINCT A1.FK
FROM A A1
WHERE A1.COL IN ('a', 'b', 'c')
and (SELECT WM_CONCAT(A2.COL)
    FROM A A2
    WHERE A2.FK = A1.FK) = 'a,b,c'

为此,您必须以逗号分隔的引用值('a','b','c')和仅逗号分隔的值(a,b,c)传递IN值。

希望有所帮助