2个表完全相同,查找b表的每条记录是不是在a表中匹配如何做

2个表完全相同,查找b表的每条记录是不是在a表中匹配如何做

2个表完全相同,查找b表的每条记录是不是在a表中匹配怎么做?

2个表,一个是access表,一个sale表,id(自动编号)   ,a,b,c   ,都是int型,起始时间(btime),结束时间(etime);

需要给sale表作查询,如果sale表的一条记录的   a   b   c三个字段能全部和access的某条记录匹配,并且起始和结束时间也在access表的2个时间范围之内就返回   id号,yes   否则返回   id号,   no  

匹配条件A.a=B.a   and   A.b=B.b   and   A.c=B.c   and   A.btime <   B.btime   and   A.etime> B.etime  

最后返回就是   2个字段,一个sale表的id号,一个是yes/no

差不多就是这个意思吧,以前好像写过,2年多没写sql语句了,全忘记了   大家帮帮忙




先select id,加上你上面的条件,然后用not in

select * from tba where id not in (select id from tbb where #$@$#@*^$#)




mysql> select * from a;

+—-+——+——+——+——-+——-+

| id | a | b | c | time1 | time2 |

+—-+——+——+——+——-+——-+

| 1 | 1 | 2 | 3 | 10 | 20 |

| 2 | 2 | 3 | 4 | 15 | 25 |

| 3 | 3 | 4 | 5 | 20 | 30 |

+—-+——+——+——+——-+——-+

3 rows in set (0.00 sec)

mysql> select * from b;

+—-+——+——+——+——-+——-+

| id | a | b | c | time1 | time2 |

+—-+——+——+——+——-+——-+

| 1 | 1 | 2 | 3 | 11 | 19 |

| 2 | 2 | 3 | 4 | 15 | 25 |

| 3 | 3 | 4 | 5 | 20 | 30 |

+—-+——+——+——+——-+——-+

3 rows in set (0.00 sec)

mysql> SELECT a.id,

-> IF(b.id, ‘yes ‘, ‘no ‘)

-> FROM a

-> LEFT JOIN b

-> ON b.time1 > a.time1

-> && b.time2 < a.time2

-> && a.a = b.a

-> && a.b = b.b

-> && a.c = b.c;

+—-+———————–+

| id | IF(b.id, ‘yes ‘, ‘no ‘) |

+—-+———————–+

| 1 | yes |

| 2 | no |

| 3 | no |

+—-+———————–+

3 rows in set (0.00 sec)




楼上正解




学习。

2个表完全相同,查找b表的每条记录是不是在a表中匹配如何做

相关文章:

你感兴趣的文章:

标签云: