一尘不染

子查询中where子句中的两列

sql

我有一个查询:

SELECT s.period, s.year, s.amount 
FROM salaries s

我只想从salaries表中选择周期和年份等于的行:

SELECT p.period, p.years 
FROM periods p

我知道最简单的方法是使用连接,但是问题是-在应用程序中,我只能在后面添加一个子句 WHERE

因此,解决方案应该是:

SELECT s.period, s.year, s.amount 
FROM salaries s 
WHERE ...

那可能吗?

编辑: 结果应与以下相同:

SELECT s.period, s.year, s.amount 
FROM salaries s
  JOIN periods p ON s.period = p.period AND s.year = p.year

阅读 124

收藏
2021-03-10

共1个答案

一尘不染

您可以为IN条件使用多个列:

SELECT s.period, s.year, s.amount 
FROM salaries s
where (s.year, s.period) in (select year, period from periods)

但是戈登的not exists解决方案可能更快。

2021-03-10