【问题标题】:I want to Select from a table Where my id meets condition from a list我想从列表中选择我的 id 符合条件的表
【发布时间】:2019-07-11 18:47:44
【问题描述】:

我有一个列表,我想从我的 postgresql 表数据中选择条件满足我列表中的数据。

我环顾四周,我看到了解决方案,但它对我不起作用。我也尝试用LIKEIN with ANY(%s)替换IN

EnviromentalList = [59, 66, 67, 79, 144, 275, 276, 3096, 3097, 356, 376, 509, 548, 589, 871, 872, 888, 889, 890, 891, 901, 919, 960, 998, 221, 223, 224, 225, 226]

cur.execute("SELECT event_id, event_time FROM availabilitycalculation.machine_events WHERE event_id IN %s ;", (EnviromentalList,))

ErrorList = cur.fetchall()

我明白了:

psycopg2.ProgrammingError:“ARRAY”附近的语法错误 第 1 行: ...ilitycalculation.machine_events WHERE event_id IN ARRAY[59,6...

【问题讨论】:

  • 你想要ANY()

标签: python-3.x postgresql


【解决方案1】:

要在 SQL 中选择满足条件的行,您对运算符的使用将取决于您尝试提取的信息,在这方面,从数据库中获取更多详细信息将有助于确定您想要完成的具体内容。

喜欢

在这个特定示例中,您似乎希望使用 LIKE 运算符来选择以字母 s 结尾的所有事件 ID 实例。例如假设我有一个特定国家/地区的数据库,并希望选择以 d 结尾的国家/地区。

select country from table where country like '%d';
   country   
-------------
 Ireland
 Finland
 Switzerland
(3 rows)

任何

现在,让我们以ANY 为例。当我们希望选择任何满足指定条件的条目时使用它。回到上面的例子,假设我们正在处理一个假设的人口表,并且某些国家的人口比其他国家多。

我们希望选择任何人口超过 1000 万的国家/地区。

select country from table where country = any (select country from table where population>10000000);

   country   
-------------
 South Korea
 Brazil
 Spain
 Italy
 United Kingdom
(5 rows)

这是如何使用 LIKEAND 的两个示例,对于您的情况,您应该考虑您尝试使用每个运算符提取的特定信息。

【讨论】:

  • 感谢您的回答。我用 ANY 更改了我的代码,对于参数,我采用了一个新的选择,它从我的数据库的另一个表中返回了这个列表
猜你喜欢
  • 1970-01-01
  • 2020-07-04
  • 2012-07-15
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
相关资源
最近更新 更多