gpt4 book ai didi

mysql - 带有 LEFT JOIN 的 MySQL SELECT 中的空行

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:47 25 4
gpt4 key购买 nike

我有三个表:usersfacilitiesstaff_facilities

users 包含平均用户数据,在我的案例中最重要的字段是 users.idusers.first users.last.

facilities 也包含相当数量的数据,但除 facilities.id 外,其他数据都不一定与此示例相关。

staff_facilitiesstaff_facilities.id(int,auto_inc,NOT NULL)、staff_facilities.users_id(int,NOT NULL)和staff_facilities.facilities_id(整数,不为空)。 (这是一口!)

staff_facilities 引用了其他两个表的 id,我们正在调用此表来查找用户的设施和设施的用户。

这是我在 PHP 中的选择查询:

SELECT users.id, users.first, users.last FROM staff_facilities LEFT JOIN users ON staff_facilities.users_id=users.id WHERE staff_facilities.facilties_id=$id ORDER BY users.last

这个查询在我们的开发服务器上工作得很好,但是当我把它放到客户端的生产环境中时,结果集中经常会出现空白行。我们的开发服务器正在使用客户端生产服务器上已存在的复制表和数据,但硬件和软件差异很大。

这些行没有任何信息,包括三个需要在数据库中输入 NOT NULL 值的 id 字段。通过后端的 MySQL 管理工具运行查询返回相同的结果。在表中搜索 NULL 字段没有找到任何结果。

另一件奇怪的事情是空行的数量根据 WHERE 子句 id 检查导致的不同结果而变化。它通常是一到三个空行,但在使用相同参数时它们是一致的。

由于 LEFT JOINS,我曾多次处理过返回几乎重复的行,但我以前从未遇到过这种情况。就显示信息而言,我可以轻松地向最终用户隐藏它。我主要担心的是,随着时间的推移和记录数量的增加,这个问题会变得更加复杂。事实上,这个系统刚刚安装,staff_facilities 表中已经有 2000 多条记录。

任何见解或方向将不胜感激。我还可以提供更详细的示例和信息。

最佳答案

您只是从连接右侧的表中选择列。当然其中一些是完全空的,你做了一个左连接。因此,这些记录与连接左侧表中的 id 匹配,但不与连接右侧的任何数据匹配。由于您没有返回左表中的任何列,因此看不到任何数据。

关于mysql - 带有 LEFT JOIN 的 MySQL SELECT 中的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1050597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com