python - 根据初始选择查询之外的列获取相关行
问题描述
我无法找到一种高效或优雅的方式在 SQL 中执行此类查询。
假设我有一张名为“People”的表,并且我知道一个人的 ID,并希望找到与该人年龄和性别相同的所有其他人。此处显示了所需的结果:
人们
PersonID Age Sex
1 22 M
2 24 F
3 36 M
4 22 M
5 77 F
6 22 F
期望的结果
PersonID Age Sex
1 22 M
4 22 M
理论上,这可以分两步完成:首先,根据 ID 查询人的性别和年龄,然后根据年龄-性别组合查询整个表:
SELECT Age, Sex FROM People WHERE PersonID = 4
SELECT * FROM People WHERE Age = <age of Person 4> AND Sex = <sex of person 4>
我目前正在read_sql
使用 SQL 语法使用 python pandas 函数,因此我已经能够通过 Python 中的“后处理”事物来解决这个问题,最终不得不执行这两个查询。问题是我知道这效率不高,应该只用一个查询就可以做到。我也试图用它RIGHT JOIN
来做到这一点,但没有看到正确的方法。任何提示表示赞赏。
解决方案
一种方法是使用自联接:
SELECT p1.*
FROM People p1 INNER JOIN people p2
ON p2.Age = p1.Age AND p2.Sex = p1.Sex
WHERE p2.PersonID = 4
推荐阅读
- angular - 你如何在 Angular 中读取当前 PWA 的版本哈希?
- jquery - 如何删除或更改按钮 .btn.btn-outline-secondary bootstrap-show-password 的属性“标题”?
- pyspark - PySpark中随机森林树的可视化?
- javascript - 将 URL 参数传递给另一个 URL 的最简单方法是什么?
- android - 如何根据在 kotlin 中使用的键对 json 响应进行排序
- github - 仅当以下情况为真时,如何触发 Github 操作?
- python - Python声明一个变量列表而不初始化它们
- python - opencv轮廓上的等距采样
- sql - 如何在postgresql中使用索引选择数组中的值?
- html - HTML 电子邮件无法从网络加载自定义字体