Sql 如何根据另一列中存在的特定值选择列值
我有一个项目清单,以及为这些项目投标的不同公司Sql 如何根据另一列中存在的特定值选择列值,sql,sql-server,Sql,Sql Server,我有一个项目清单,以及为这些项目投标的不同公司 project_name company_name ___________________________ abc | 1 abc | 2 abc | 3 def | 9 def | 7 ghi | 8 jkl |
project_name company_name
___________________________
abc | 1
abc | 2
abc | 3
def | 9
def | 7
ghi | 8
jkl | 1
jkl | 5
jkl | 6
jkl | 7
我只想保留公司1所在的项目,同时保留项目的其他竞争对手。预期的结果是:
project_name company_name
___________________________
abc | 1
abc | 2
abc | 3
jkl | 1
jkl | 5
jkl | 6
jkl | 7
我有一种感觉,在WHERE之后需要一个子查询来获得该结果,但我无法理解。您可以使用exists:
您可以使用exists:
另一个选项是窗口函数,通常效率更高,因为它只需要对表进行一次扫描。我们可以在此处使用条件计数:
选择p*
从…起
选择*,
countcase当company_name=1时,则1结束于按项目_name划分的分区1
来自项目
P
其中公司1>0;
另一个选项是窗口函数,通常效率更高,因为它只需要对表进行一次扫描。我们可以在此处使用条件计数:
选择p*
从…起
选择*,
countcase当company_name=1时,则1结束于按项目_name划分的分区1
来自项目
P
其中公司1>0;
对于这种情况,这是最简单的查询:
select p.*
from projects p
where p.project_name in (select project_name from projects where company_name = 1)
对于这种情况,这是最简单的查询:
select p.*
from projects p
where p.project_name in (select project_name from projects where company_name = 1)
请告诉我们您的尝试。请告诉我们您的尝试。它很有效,非常感谢!很有效,非常感谢!