環境 Mac
安裝方式 brew
版本 10.1.26 10.2.x
出現的問題:
現在有2張表 A表 與B表
A表資料有1000條 B表有200條
select * from A left join B on A.id = B.a_id
結果只能查到200條資料.才發現 不管是 left join 還是right join 還是inner join 都是一樣的結果.
將資料庫恢復到服務器上后查詢正常. 求大神賜教.是怎么回事?
uj5u.com熱心網友回復:
出問題的地方select * from A看看uj5u.com熱心網友回復:
這個沒有問題.select * from A 是1000條沒錯. select * from B 是200條
uj5u.com熱心網友回復:
樓主是否加要WHERE字句? 建議貼出實際的陳述句。uj5u.com熱心網友回復:
沒有where條件 實際陳述句太多了.稍后貼出來
uj5u.com熱心網友回復:
SELECT 太多了 略
FROM `b_archives` `arc`
LEFT JOIN `t_system_param` `edu` ON `arc`.`education` = `edu`.`id`
LEFT JOIN `t_system_param` `sm` ON `arc`.`studentMajor` = `sm`.`id`
LEFT JOIN `t_system_param` `st` ON `arc`.`studentType` = `st`.`id`
LEFT JOIN `t_system_param` `ss` ON `arc`.`studentState` = `ss`.`id`
LEFT JOIN `t_system_param` `cl` ON `arc`.`chineseLevel` = `cl`.`id`
LEFT JOIN `t_system_param` ON `arc`.`fundSource` = `t_system_param`.`id`
LEFT JOIN `b_grades` ON `arc`.`gradesID` = `b_grades`.`id`
LEFT JOIN `b_college` ON `b_grades`.`college` = `b_college`.`id`
LEFT JOIN `v_dormitory` ON `v_dormitory`.`archivesID` = `arc`.`id`
問題基本確定位置了. 其實去掉 v_dormitory 查詢結果正常. v_dormitory 是一個視圖 SQL如下 :
select 略
from `b_dormitory`
where
`b_dormitory`.`id` in (select max(`b_dormitory`.`id`) from `b_dormitory` group by `b_dormitory`.`archivesID`)
b_dormitory 表中針對一個archivesID 有多條資料. 只取b_dormitory.id 最大的. 故此增加了個中間表來確定每個archivesID只對應唯一一個b_dormitory
疑問:
一定得加中間表嗎? 為什么之前在服務器上沒有這樣的情況? 在本機就出現了.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/112380.html
標籤:MySQL
上一篇:同時為多個表新增相同欄位
下一篇:資料庫知識
