sql - 如何使用 sql 连接简化此查询?

标签 sql postgresql

my_table 有 4 列:id integer, value integer, value2 integer, name character varying

我想要所有记录:

  1. 与名称为“a_name”的记录具有相同的值2
  2. 有一个字段值低于名称为“a_name”的记录之一

我通过以下查询获得了令人满意的结果:

select t.id 
from my_table as t
where  t.value < ( select value from my_table where name = 'a_name')
and s.value2 = (select value2 from my_table where name = 'a_name');

但是是否可以使用 sql 连接来简化此查询?

加入同 table 在我的脑海里还是太复杂了。我试着用这个例子来理解。

到目前为止,我所尝试的是一个充满重复的结果:

select t2.id 
from my_table as t
inner join my_table as t2 on t2.value2 = t.value2
where t2.value < ( select value from my_table where name = 'a_name');

最佳答案

我认为这会解决您的问题。

select t1.id
from my_table as t1
join my_table as t2 
  on t1.value2 = t2.value2
  and t2.name = 'a_name'
  and t1.value < t2.value

关于sql - 如何使用 sql 连接简化此查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15583824/

相关文章:

sql - 如何知道计算机上运行的 SQL Server 版本是什么?

python - MYSQL 更新另一个表中的数据(如果存在),否则插入

php - 通知表设计?

mysql - 如何使用 LEFT JOIN 和 GROUP BY 选择具有最小 count() 的记录?

postgresql - 忽略 pg_dump 中的表并恢复

postgresql - 来自多个模式的 DWH

php - 如何以自增字段为主键提高查询性能

postgresql - 带有 BETWEEN 条件的 postgres ANY()

ruby - 准备好的语句已经存在

postgresql - 在 postgres 请求中添加内容类型?