我怎样才能 运行 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
,这需要在过滤发生之前将函数应用于整个数据集,并且排除使用索引。
我正在登录 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
,这需要在过滤发生之前将函数应用于整个数据集,并且排除使用索引。