【问题标题】:pandas.read_sql_query - how to write correctly WHERE condition if both the column name and searched value contain spacepandas.read_sql_query - 如果列名和搜索值都包含空格,如何正确编写 WHERE 条件
【发布时间】:2020-05-27 12:46:25
【问题描述】:

我这样写 SQL 查询

df = pd.read_sql_query('SELECT * FROM hr_dataset WHERE "Performance Score" = "Needs Improvement";', conn)
hr_dataset - table
Performance Score - column
Needs Improvement - searched value

列名和搜索值都包含空格,这就是我必须使用引号的原因,但此查询结果出错。

**DatabaseError**: Execution failed on sql 'SELECT * FROM hr_dataset WHERE "Performance Score" = "Needs Improvement";': column "Needs Improvement" does not exist
LINE 1: ...ECT * FROM hr_dataset WHERE "Performance Score" = "Needs Imp...

我应该如何正确编写这样的查询?

【问题讨论】:

  • 请标记数据库(Oracle、SQL Server、MySQL ...)
  • 添加运行此查询时遇到的错误可能是个好主意。

标签: python sql pandas psycopg2


【解决方案1】:

请使用以下查询,“需要改进”在双引号中提及,数据库将其视为列名

SELECT * FROM hr_dataset WHERE Performance Score = 'Needs Improvement';

【讨论】:

    【解决方案2】:

    如果是 SQL Server

    SELECT * FROM hr_dataset WHERE [Performance Score] like '%Needs Improvement%'
    

    如果是 MySQL

    SELECT * FROM hr_dataset WHERE `Performance Score` like '%Needs Improvement%'
    

    如果是PostgresSQL,试试

    SELECT * FROM hr_dataset WHERE "Performance Score" like '%Needs Improvement%'
    

    请参阅 fiddle 了解 PostgresSQL

    【讨论】:

      猜你喜欢
      • 2012-01-14
      • 2012-06-12
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多