簡體   English   中英

如何在mysql中的同一數據庫中比較兩個表?

[英]how to compare two table in same database in mysql?

我是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,256423,153),該怎么做? 因為之前某些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

編輯路徑。 現在檢查它是否可以正常工作

如果路徑是靜態的(即,每個表中的所有條目的路徑都相同),則可以將該部分替換為空字符串,作為常規LEFT JOIN的一部分;

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;

要使用進行測試的SQLfiddle

請注意,此搜索不能很好地使用index ,因此,與呈現網頁無關,您無需執行任何操作。 如果需要經常執行此操作,則可能需要使數據庫中的路徑相對,並且僅在需要訪問文件時才添加絕對路徑部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM