2015-03-31 21 views
0

如何寫一個SQL選擇TABLE_1結果 這(TABLE_1.NUMBER_1 > TABLE_2.NUMBER_2) and (TABLE_1.DATE_1 > TABLE_2.DATE_2)如何寫一個SQL

SQL結果將是:

TABLES_1

NUMBER_1 , DATE_1 
5   2015/4/1 

源表:

TABLE_1

NUMBER_1 , DATE_1 
3   2015/3/1 
4   2015/2/1 
5   2015/4/1 
6   2015/1/1 

TABLE_2

NUMBER_2 , DATE_2 
3   2015/2/1 
3   2015/3/1 
+2

SO不是免費的編碼服務。請嘗試自己解決它。如果您無法正常工作,請發佈您的代碼,我們會盡力幫助您解決問題。 – Barmar 2015-03-31 01:47:28

+0

答案基本上只是一個'JOIN',它的加入條件正是你在第一段中寫的。 – Barmar 2015-03-31 01:48:18

+0

您正在使用哪些DBMS? Postgres,Oracle,DB2? – 2015-03-31 05:54:23

回答

0

使用Exists運營商。

select * 
from TABLE_1 A 
Where exists 
(
select 1 
from TABLE_2 B 
Where A.NUMBER_1 > B.NUMBER_2 
and A.DATE_1 > B.DATE_2 
) 
0

有很多方法可以實現您的結果。以下是使用連接的簡單方法:

SELECT * 
FROM TABLE_1 JOIN TABLE_2 ON 
      (TABLE_1.NUMBER_1 > TABLE_2.NUMBER_2) AND 
      (TABLE_1.DATE_1 > TABLE_2.DATE_2) 
0

試試這個。

DECLARE @table1 TABLE 
    (
     NUMBER_1 INT , 
     DATE_1 DATE 
    ) 
DECLARE @table2 TABLE 
    (
     NUMBER_2 INT , 
     DATE_2 DATE 
    ) 

INSERT INTO @table1 
VALUES (3, '20150301'), 
     (4, '20150201'), 
     (5, '20150401'), 
     (6, '20150101') 

INSERT INTO @table2 
VALUES (3, '20150201'), 
     (3, '20150301') 


SELECT * 
FROM @table1 t1 
WHERE NOT EXISTS (SELECT * 
        FROM @table2 t2 
        WHERE t2.NUMBER_2 >= t1.NUMBER_1 
          OR t2.DATE_2 >= t1.DATE_1) 

輸出:

NUMBER_1 DATE_1 
5   2015-04-01 
0

這個怎麼樣版,其中有在表2中沒有行打破你的情況這將需要從表1的那些行的值?

SELECT DISTINCT T1.* 
FROM TABLE_1 T1 
    INNER JOIN TABLE_2 T2 ON T1.NUMBER1 > T2.NUMBER2 
     AND T1.DATE1 > T2.DATE2 

這裏是一個SQLFiddle的代碼是如何工作的你的樣本數據。