一对多连接,几个表sql

时间:2017-03-28 13:01:08

标签: mysql sql join

我有一些桌子

tech_map (17行): id,name,status,id_user_add,datetime_add,评论

tech_map_expenses (7行): id,name,cost,tech_map.id

tech_map_products (8行): id,category_id,catalog_id,total,tech_map_id

tech_map_stock (8行): id,category_id,catalog_id,total,tech_map_id

我想选择退出与其他表连接的tech_map 例如:

SELECT tech_map.* 
FROM 
`tech_map`
INNER JOIN tech_map_expenses ON tech_map_expenses.tech_map_id = tech_map.id
INNER JOIN tech_map_products ON tech_map_products.tech_map_id = tech_map.id
INNER JOIN tech_map_stock ON tech_map_stock.tech_map_id = tech_map.id 
ORDER BY tech_map.id DESC 

但它返回了太多行(33)并且有重复记录。

1 个答案:

答案 0 :(得分:1)

您应该将左连接更改为内连接。为什么呢?

  • 左连接将仅包含没有的所有tech_map 与其他表格的连接。

  • 内部联接仅包含所有具有连接的tech_map 与其他表格。

看看这个picture,它总能帮助我。