目前正在使用SQLite和Pandas学习数据科学。致力于政治捐款数据集。在加入两个表时,我想知道下面代码中WHERE contributors.candidate_id = candidates.id
的目的是什么。鉴于我的目标是为特定候选人提取贡献者并在另一个表中包含他们的名字,如果没有这个条件,输出会不一样吗?
implicit_join_sel = """
SELECT
contributors.last_name, contributors.first_name, contributors.amount, candidates.last_name
FROM
contributors, candidates
WHERE
contributors.candidate_id = candidates.id
AND candidates.last_name = 'Obama';
"""
db.cursor().execute(implicit_join_sel)
输出:
contributors.last_name contributors.first_name contributors.amount candidates.last_name
0 Buckler Steve 50.0 Obama
1 Buckler Steve 25.0 Obama
2 Buckheit Bruce 100.0 Obama
3 Buckel Linda 2300.0 Obama
4 Buckel Linda -2300.0 Obama
FYI表格摘要:
--Candidates--
id first_name last_name middle_name party
0 33 Joseph Biden NaN D
1 36 Samuel Brownback NaN R
--Contributors--
last_name first_name middle_name street_1 street_2 city state zip amount date candidate_id
0 Agee Steven NaN 549 Laurel Branch Road NaN Floyd VA 24091 500.0 2007-06-30 16
4 Akin Charles NaN 10187 Sugar Creek Road NaN Bentonville AR 72712 100.0 2007-06-16 16
答案 0 :(得分:1)
单独FROM
子句的sytax会导致contributors
表的每一行都连接到candidates
表的每一行。 WHERE
子句将连接限制为仅具有相同候选ID的那些行对。
您的FROM
和WHERE
子句的形式并不像更现代的SQL语法那样清晰,后者会将其表达为
FROM
contributors
inner join candidates on contributors.candidate_id = candidates.id