我有一个问题:
SELECT s.period, s.year, s.amount
FROM salaries s
我想从salaries
表中选择时段和年份等于的行:
SELECT p.period, p.years
FROM periods p
我知道最简单的方法是使用join,但问题是 - 在应用程序中我只能在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
答案 0 :(得分:5)
您可以为IN
条件使用多个列:
SELECT s.period, s.year, s.amount
FROM salaries s
where (s.year, s.period) in (select year, period from periods)
但戈登的not exists
解决方案可能更快。
答案 1 :(得分:1)
这适用于您的环境吗?
WHERE EXISTS (SELECT 1
FROM periods p
WHERE p.period = s.period AND p.year = s.year
)
答案 2 :(得分:0)
试试这个:
SELECT s.period, s.year, s.amount FROM salaries s
where s.period in (select period from periods)
and s.year in (select year from periods)