【发布时间】:2020-03-09 17:57:47
【问题描述】:
假设我有 3 个用于构建新查询的数据列表。我需要获取这些数据列表并返回那些发现东西的列表的值。
所以我的问题是:
有没有标准的方法来获取列表并将其用作列?
我需要使用多个列表作为列,其中一列是“JOIN ON”或“WHERE IN”部分。
我的第一个查询的结果用于构建我的 3 列表。
假设我找回了这些数据:
[[ID, TYPE, OTHER],
[1, C, S],
[2, C, O],
[3, D, D],
[4, D, H]]
然后将该表/二维数组转换为以下 Python 列表:
[1, 2, 3, 4]
[C, C, D, D]
[S, O, D, H]
现在我想将这两个列表用作 select 语句中的列,如下所示:
select [C, C, D, D] as TYPE # These 2 list are needed to return in the correct order
,[S, O, D, H] as OTHER # as it relates to [1, 2, 3, 4] in the WHERE.
,table.value
,table.color
From table
where table.value in [1, 2, 3, 4] # one list is used to deal with the where
table 包含 2 列:
VALUE COLOR
1 Red
2 Green
3 Blue
4 Black
结果应如下所示:
TYPE OTHER VALUE COLOR
C S 1 Red
C O 2 Green
D D 3 Blue
D H 4 Black
【问题讨论】:
-
您使用的是 MS SQL Server 还是 Oracle?
-
@jarlh 两者。我的一些查询将直接在 SQL Server 上进行,而一些查询将针对链接的 Oracle 服务器使用
OPENQUERY。我可以获取具有单个值作为列的数据,但我需要能够使用值列表来执行此操作。否则我将不得不构建 20 个 Union 语句,我真的不认为这是有效的。 -
不确定如何在 python 中执行此操作,但您所描述的是 sql server 中的表值参数。
-
@SeanLange 这必须传入一个查询字符串,该字符串使用 ODBC 标准驱动程序通过 pyodbc 发送到 SQL Server。同样,我可以使用单个值而不是列表来执行此操作。
-
好吧,正如您发现的那样,您不能在标准字符串中传递值数组。你有一个二维数组。您可以使用字符串拆分器并传入分隔列表。但是您将需要一个返回每个元素的序号位置的函数,这样您就可以重新组合一个分隔列表并正确排列这些值。这是其中一个很好的例子。 sqlservercentral.com/articles/…
标签: python sql sql-server oracle