首頁 > 後端開發 > php教程 > 資料庫欄位匹配的問題

資料庫欄位匹配的問題

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2023-03-02 12:36:01
原創
1624 人瀏覽過

現在有兩個表(mysql)
表1字段如下:省,市,手機號,姓名,其它字段
表2字段如下:省,市,手機號,其它字段

表1和表2的資料庫都較大,每日新增資料數百萬行。
現在對錶1和表2都進行了分錶。
需求是:根據兩表中的手機號碼來配對兩表的資料。
問題是:
1、匹配的好的數據如何存儲,是存儲到第三個表,或者在表1加個字段,保持表2匹配的行的id。
2、如何查詢未符合的記錄。

回覆內容:

現在有兩個表(mysql)
表1字段如下:省,市,手機號,姓名,其它字段
表2字段如下:省,市,手機號,其它字段

表1和表2的資料庫都較大,每日新增資料數百萬行。
現在對表1和表2都進行了分錶。
需求是:根據兩表中的手機號碼來配對兩表的資料。
問題是:
1、匹配的好的數據如何存儲,是存儲到第三個表,或者在表1加個字段,保持表2匹配的行的id。
2、如何查詢未符合的記錄。

create table zzz(
id int not null,
xx ...,
primary key(id)
) as (
select id, xx from table where ..
)
登入後複製

http://dev.mysql.com/doc/refm...

未匹配的記錄, 使用一張表作為左表關聯另外一張表, 判斷右表是否有 null 即可
例如

select * from tb1
left join tb2 on tb1.mobi=tb2.mobi
where tb2.mobi is null
登入後複製

這樣的結果就是 tb1 中的所有沒出現在 tb2 的記錄

但是這樣有另外一種情況tb2 中如果有某個記錄tb1 不存在的就無法查出tb1 的未匹配記錄.
其實要查看兩表是否全部匹配可以使用full join 來進行匹配, 但是從你的這個資料量來看, 建議不要使用full join , 就算用也不要查全部的.

關於 join 用法看這張圖

資料庫欄位匹配的問題

表的最佳化
1、手機號碼欄位建立索引

2、分錶建議按手機號碼前幾位來分錶。

關於儲存

建議表1表2分別加字段,儲存另一表中的行。下次更新處理的時候可以跳過欄位有值的部分處理。

未匹配的就是字段為空的。

另外

建議把更新直接放到記錄的時候,往表1加資料的時候查詢是否在表2中存在。

查詢的可以
select * from t1,t2 where t1.mobile = t2.mobile
查詢出來了就可以創建新的了

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
mongodb 外網IP啟動失敗
來自於 1970-01-01 08:00:00
0
0
0
如何學習MongoDB?
來自於 1970-01-01 08:00:00
0
0
0
mongodb啟動
來自於 1970-01-01 08:00:00
0
0
0
linux - ubuntu14安裝mongodb出錯
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板