gpt4 book ai didi

mysql - 查询中内部和外部连接在一起,可能

转载 作者:行者123 更新时间:2023-11-29 23:25:15 28 4
gpt4 key购买 nike

我正在尝试在单个查询中实现内部和外部联接,我不确定我的做法是正确还是错误,因为我不太擅长查询。

就这样吧。

我有以下表格。

hrs_residentials
hrs_residential_utilities
hrs_utilities
hrs_utility_type

hrs_residentials:

ResID,   ResType,  ResNo  -    -    -  
1 2 001 - - -

hrs_residential_utilities:

RUID, UtilityID, ResID, -   -    -    - 
NULL NULL NULL

hrs_utilities:

UtilityID, UtilityTypeID, Number, ConsumerNumber,  -,   -,   -
NULL NULL NULL NULL

hrs_utility_type:

UTID, UName, UDescription
1 PESCO PESCO Electric Meter
2 SNGPL Sui Northen Gas Pipe Lines

所以我想在数据表中显示数据,但我希望数据应该显示在 hrs_residentials 表的表中,无论 hrs_residential_utilities 是否有数据。所以我选择了左外连接,得到了我想要的结果。

但之后,当我尝试使用 hrs_utilities 执行 hrs_residential_utilities 的内部操作时,我也不再获得 hrs_residentials 的结果。就好像我们看到 hrs_residential 确实有表内的数据一样。我不想与 hrs_residentials 进行内部联接,我希望在 hrs_residential_utilitieshrs_utilities 之间进行内部联接。

这可能吗,还是我在这里遵循了错误的方法?抱歉我不好。如果有人可以帮助我,正确的查询是什么。

这是我迄今为止尝试过的查询。

SELECT R.`ResID`,R.`ResNo`
FROM `hrs_residentials` R
LEFT OUTER JOIN `hrs_residential_utilities` RU
ON R.`ResID` = RU.ResID
INNER JOIN `hrs_utilities` U
ON RU.`UtilityID` = U.`UtilityID`
WHERE 1=1;

在内部联接之后,我停止从 hrs_residentials 表获取结果,但我正在其他两个表之间进行内部联接。

最佳答案

尝试像这样的子查询:

SELECT *
FROM `hrs_residentials` R
LEFT OUTER JOIN
(
SELECT * FROM
`hrs_residential_utilities` RU
INNER JOIN `hrs_utilities` U
ON RU.`UtilityID` = U.`UtilityID`
) AS subqyr
ON R.`ResID` = subqyr.`ResID`

关于mysql - 查询中内部和外部连接在一起,可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27020490/

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