2017-11-18 43 views
1

我有1臺DATA列比較1列中,MYSQL:與另一個表

ID,CLASS,CODE,DATE 
1,123456,10,12-10-2017 
2,987654,40,2017-11-10 
3,456789,50,2017-11-11 
4,234567,60,2017-11-12 
5,872341,150,2017-11-13 

和另一個表PROPS

ID,CLASS_ID,R_CODE 
1,123456,20 
2,987654,40 
3,456789,50 
4,234567,60 
5,872341,100 
6,746365,738 
7,84264,8937 

我想從DATA這裏選擇所有的行CODEDATA表是大於或等於(>=R_CODEPROPS表。

基本上,我想檢查列的每個元素與列R_CODE的每個元素一個接一個。

任何幫助將不勝感激。

回答

0
SELECT a.*, b.* 
FROM data a, props b 
WHERE a.code >= b.r_code 

我假設class和class_id不需要匹配?

編輯:這個例子是交叉連接,其中所述第一表中的每一行與第二個表的每行匹配。然後在哪裏過濾到你想要的。

+0

嗨,我微微是新來的SQL。我只想澄清一個疑問。我想依次比較'a.code'的每個元素和'b.r_code'的所有元素。例如:。分別比較'a.code'的'20'和'20',然後'40',然後'50',然後'60' ...直到'b.r_code'的'8937'。你的查詢會這樣做嗎? – Edward

+0

是的。您可以刪除WHERE子句以在過濾之前查看結果。你看到的是a.row_1與b.row_1結合,然後是a.row_1與b.row_2等。一旦a.row_1與所有b相匹配,則交叉連接然後通過b.row_1進入a.row_2, a.row_2和b.row_2等。如果DATA有1000行,PROPS有2000行,那麼在過濾之前,你將有1000 * 2000 = 2,000,000行。 – PatrickSJ

+0

非常感謝您的幫助和解釋 – Edward