sql - 需要在 WHERE 子句中满足两个条件的 SQL
问题描述
我有鸟类观察表。这是一个例子:
Unique_ID List_ID Locality Common_name
A1 001 Park Downy Woodpecker
A2 001 Park Hairy Woodpecker
A3 001 Park Carolina Chickadee
B1 002 Campground Blue Jay
B2 002 Campground Hairy Woodpecker
C1 003 Backyard Downy Woodpecker
C2 003 Backyard American Goldfinch
D1 004 School American Goldfinch
D2 004 School Hairy Woodpecker
E1 005 Park Downy Woodpecker
E2 005 Park Carolina Chickadee
我正在尝试为 PostgreSQL 编写一个查询,该查询将只返回同时出现啄木鸟、Downy 和 Hairy 的地区。在小示例表中,那只是公园。其他地方只有一种或另一种。
我试过了
SELECT List_ID, LOCALITY, COMMON_NAME FROM table
WHERE COMMON_NAME = 'Downy Woodpecker' and COMMON_NAME = 'Hairy Woodpecker';
但没有返回任何结果。我的表有 1,000 条观测值,它基于eBird 数据,这两个物种在全国范围内普遍存在,因此必须至少有一个 list_ID 同时出现它们。在我的示例表中,只有 Park(基于 list_ID 001)满足我正在寻找的条件。
如果我理解IN
,它将返回满足任一条件的行。任何示例 list_IDs 都适用于该查询,但这不是我想要的。如何编写强制WHERE
满足多个条件的查询?
解决方案
您可以将表与自身连接以获取所需的位置。例如:
select distinct a.locality
from my_table a
join my_table b on a.locality = b.locality
where a.common_name = 'Downy Woodpecker'
and b.common_name = 'Hairy Woodpecker'
推荐阅读
- python - Python:无法理解的 if 循环
- ajax - ESP8266 同时请求多个 HTTP GET
- python - Keras train_on_batch() 不训练模型 vs fit()
- pandas - 将四个合并为数据框后如何创建新的 csv 文件?
- python - 在 Sublimetext 3 中安装 NumPy 包?
- mongodb - 当我查询多个字段然后执行排序时,如何正确设置 MongoDb 索引
- android - 在不改变活动的情况下移动 int
- python - 如何用除自身之外的任何其他字母或python中的相邻字母替换字符串中的字母
- javascript - 反应 onClick setState 然后运行函数
- centos7 - 端口打开时 telnet 超时