【问题标题】:MySQL Inner Join based query gives duplicate results基于 MySQL 内连接的查询给出重复的结果
【发布时间】:2016-03-05 21:18:17
【问题描述】:

我使用由多个表组成的内部联接编写了一个查询

SELECT     * 
FROM       admin_info 
INNER JOIN admin_login 
INNER JOIN gender 
INNER JOIN admin_type 
INNER JOIN area 
INNER JOIN document_type 
INNER JOIN permissions 
ON         admin_login.admin_id=admin_info.admin_id 
AND        admin_type.admin_type_id=admin_info.admin_type_id 
AND        area.area_id=admin_info.area_id 
AND        document_type.document_id=admin_info.document_id 
AND        permissions.permission_id=admin_info.permission_id

上述查询有效,但给出了同一记录或重复记录的多个结果 请帮我修复查询或提供此查询的替代方法 还请建议我如何优化查询以加快处理速度??

以上查询

SELECT     * 
FROM       admin_info 
INNER JOIN admin_login 
INNER JOIN gender 
INNER JOIN admin_type 
INNER JOIN area 
INNER JOIN document_type 
INNER JOIN permissions 
ON         admin_login.admin_id=admin_info.admin_id 
AND        admin_type.admin_type_id=admin_info.admin_type_id 
AND        area.area_id=admin_info.area_id 
AND        document_type.document_id=admin_info.document_id 
AND        permissions.permission_id=admin_info.permission_id

Given 下面是结果的屏幕截图。

我想要每人只有一条记录,而不是重复记录?

除此之外,当我使用 foreach/while 循环时,结果会有所不同,请帮忙?

【问题讨论】:

  • 能分享一下表结构和预期输出吗?
  • 有很多表我应该共享所有表吗?
  • 我只需要查询为每个用户输出一条记录,即没有重复记录!
  • 子/外键表有多条记录关联一个人怎么办?
  • result中显示的列是否都属于同一张表?

标签: php mysql join


【解决方案1】:

实际上问题出在性别表上,一旦我删除了性别表内部连接,它就没有在查询中引用,它按预期工作!

【讨论】:

  • 可以发一下gender表的数据和结构吗?
  • 另外我可以看到您没有在结果中的任何地方使用gender 数据,您为什么需要以及在哪里需要?
猜你喜欢
  • 1970-01-01
  • 2020-08-05
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 2021-03-15
  • 2018-12-11
相关资源
最近更新 更多