0

我有一张这样的桌子:

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子句中所有元素的那个(使用 column sort_index)。

这可以用 SQL 实现吗?如果是这样,怎么做?(甲骨文)

例如,我有这个数据

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 并尊重顺序。

4

1 回答 1

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'

为此,您必须将 IN 值作为逗号分隔的引号值('a'、'b'、'c')传递,并且只能以逗号分隔的值(a、b、c)的形式传递。

希望能帮助到你

于 2012-04-17T09:27:13.583 回答