我必须运行一个sql查询,该查询仅在两个条件为真时才获取值。因此,例如,我需要抓取asset=x
和id_name=12345
的所有值。资产和id_name
之间大约有 10k 种组合,我需要能够使用 sql 进行查询。通常我只会执行以下操作:
select * from database where id_name IN (12345)
但是,当两个条件必须为真时,我如何进行此查询。 id_name
必须等于 12345,资产必须等于 x。
我尝试将我需要的列表转换为元组,如下所示:
new_list = list(scams[['asset', 'id_name']].itertuples(index=False, name=None))
这给了我这样的列表:
new_list = (12345, x), (32342, z)...etc.
任何建议都会很棒。谢谢!
根据我的理解,您需要根据两个过滤器的组合来查询或获取记录。此外,您还有大约 10K 组合。这是一个简单的基于 SQL 的解决方案。 在同一表中创建新列或构建临时表/视图,新列显示"column_new"。在新列中填充id_name和资产的串联值。您可以使用基于数据库的串联函数。 SQL 服务器中的示例使用 CONCAT(column1,column2(。 现在,您可以将 SQL 编写为 select * from database where colum_new IN ("12345x","32342z");
。 注意:您也可以在进行串联时在第 1 列和第 2 列之间使用"-"或"|"。