簡體   English   中英

子句中的兩列在where子句中

[英]Two columns in subquery in where clause

我有一個問題:

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

IN條件可以使用多個列:

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

但戈登not exists解決方案可能更快。

這適用於您的環境嗎?

WHERE EXISTS (SELECT 1
              FROM periods p
              WHERE p.period = s.period AND p.year = s.year
             )

試試這個:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM