2017-11-18 72 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