我怎样才能 运行 MySQL 中的一个子查询,并且只从 Python 得到 year = 2020?

How can I run a Sub Query in MySQL, and get only year = 2020, from Python?

我正在登录 MySQL 数据库和 运行 以下代码行。

df = pd.read_sql("Select data_date, hr, group, eno, eut, car, freq, band, hq, From fsm WHERE IN (SELECT * FROM fsm WHERE year(data_date) = '2020')", st_connection)

我想 select 只记录 2020 年的记录,所以我在这里使用子查询。在大约 1 亿条记录和超过 300 列的情况下,table 非常庞大,因此我正在尝试获取数据的一个子集。出了点问题,但我说不出哪里出了问题。

I want to select only records from 2020, so I'm using a sub query here.

我完全看不出 suqbuery 有什么意义。如果你想要2020年的记录,那么:

select ...
from fsm 
where data_date >= '2020-01-01' and data_date < '2021-01-01'

请注意,这对列 data_date 使用了直接过滤。这比在列上应用日期函数要有效得多,如在您的原始谓词中:year(data_date) = 2020,这需要在过滤发生之前将函数应用于整个数据集,并且排除使用索引。