如何在mysql中比较同一数据库中的两个表?

如何在mysql中比较同一数据库中的两个表?,mysql,sql,Mysql,Sql,我是MYSQL查询新手。我在同一个数据库中有两个不同的表。每个表仅3列。我想和第一张桌子的第二张桌子比较一下 表1: path -> C:/sume/sorve/data001/data001.jpg frn -> 256423 byte -> 153 table 2: path -> C:/ones/elsa/data001/data001.jpg frn -> 256423 byte -> 153 我需要匹配(data001/data001.jpg,2

我是MYSQL查询新手。我在同一个数据库中有两个不同的表。每个表仅3列。我想和第一张桌子的第二张桌子比较一下

表1:

path -> C:/sume/sorve/data001/data001.jpg
frn -> 256423
byte -> 153

table 2:
path -> C:/ones/elsa/data001/data001.jpg
frn -> 256423
byte -> 153
我需要匹配(data001/data001.jpg,256423153),我怎么做?因为以前的一些data001子目录总是来自不同的目录

哪些记录与第二个表不匹配,我需要这些记录。

请尝试使用此表

    select t1.* from table1 t1
    left join table2 t2 on 
        substring_index(t2.path, '/', -1) =  substring_index(t1.path, '/', -1) 
        and t2.frn = t1.frn 
        and t2.byte = t1.byte
    where t2.path is null or t2.frn is null or t2.byte is null
为路径编辑。现在检查它是否应该工作

如果路径是静态的(即每个表中的所有条目都是相同的),您可以将该部分替换为空字符串,作为正常的
左连接的一部分

SELECT t1.*
FROM Table1 t1
LEFT JOIN Table2 t2
  ON REPLACE(t1.`path`, 'C:/sume/sorve/', '') = 
     REPLACE(t2.`path`, 'C:/ones/elsa/', '') 
 AND t1.`frn`  = t2.`frn`
 AND t1.`byte` = t2.`byte`
WHERE t2.`path` IS NULL;


请注意,这种搜索在索引方面做得不好,在呈现网页时也不应该这样做。如果这是您经常需要做的事情,您可能希望将数据库中的路径设置为相对路径,并且仅在需要访问文件时添加绝对路径部分。

是否有列名path、frn、byte?是的,两个表的列名相同,列数也相同,在表1的所有行中,应该忽略的路径路径是否相同?C:/sume/sorve/注意,此位置与第二个表data001/data001.jpg仅在所有目录都不同之前匹配,因此我无法直接与路径匹配。