如何在mysql中比较同一数据库中的两个表?
我是MYSQL查询新手。我在同一个数据库中有两个不同的表。每个表仅3列。我想和第一张桌子的第二张桌子比较一下 表1:如何在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
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仅在所有目录都不同之前匹配,因此我无法直接与路径匹配。