【发布时间】:2023-03-04 19:44:01
【问题描述】:
我有一张桌子my_table:
id x_id type
--- ---- ----
1 31 a
2 14 b
3 31 c
4 12 c
5 31 b
6 12 c
7 14 a
我想返回x_id 具有type 的所有行满足数组arr 中的所有元素。
编辑:但是,该数组中的实际值及其数量未知,但可能是列type 的值。 arr 中总是至少有一个值。
所以对于arr = [b, c],我应该得到以下结果:
id x_id type
--- ---- ----
3 31 c
5 31 b
如何编写查询以获得这样的结果?
注意:我对sql 命令不是很熟悉,所以如果没有意义,请帮我编辑我的问题。
【问题讨论】:
-
你能解释一下你在结果集中获得 31 作为 X_id 的标准吗?
-
@developer 31 因为至少有两行
x_id=31代表type=b和type=c -
@Julio 您是说数组中的项目数(当前为 2)有时可能是 3,有时可能是 4,等等?如果是这样,您如何确定数组中的哪些项目是感兴趣的?换句话说,是什么让 b 和 c 成为感兴趣的数组的一部分?如果没有一致的逻辑来确定,那么我相信您所描述的内容需要动态 sql(而不仅仅是普通的标准 sql)。
-
@BrianDeMilia 是的,数组中值的数量可以是任何值,或者至少会有一个值(我应该提一下)。我将添加动态 sql 标签。在上面的示例中,我使用 b 和 c 来说明我的示例,它可能是
[a]、[a,b,c],甚至是[d,e,f,g]。但是,当我以[a,b]为例时,我期望x_id=31。 -
@Julio 出于什么原因(从业务逻辑上讲)是 [a,b,c] 与 [d,e,f,g] ?什么决定了数组中有哪些项目?
标签: mysql sql dynamic-sql