gpt4 book ai didi

MySQL View 的全连接问题

转载 作者:行者123 更新时间:2023-11-29 19:42:56 26 4
gpt4 key购买 nike

我正在尝试对两个表进行某种完全联接来创建 View ,但无法找出正确的 mysql 查询。通过重载一些值来连接两个表。

让我们看一下这三个表:

公司表

ID  Name
---------
1 A
2 B
3 C

工具表

ID  Tool        Version
------------------------
1 Hammer 1
2 Saw 1
3 Screwdriver 1
4 Wrench 2

公司特殊工具表

ID  ToolID  CompanyID   Tool
-------------------------------------------
1 2 1 Frame Saw
2 3 1 Phillips screwdriver
3 3 1 Slot screwdriver

基本上,CompanySpecialTools 表“重载”了给定公司的一些工具。

我尝试创建的 View 应该为以下查询生成以下结果:

Select * from myview where companyID=1 OR companyID is null

ToolID CompanyID Tool
--------------------------
1 NULL Hammer
2 1 Frame Saw
3 1 Phillips screwdriver
3 1 Slot screwdriver
4 NULL Wrench



Select * from myview where companyID=2 or companyID is null

ToolID CompanyID Tool
--------------------------
1 NULL Hammer
2 NULL Saw
3 NULL Screwdriver
4 NULL Wrench

最佳答案

经过多次尝试和错误,我似乎找到了解决方案。

以下查询回答了我的问题:

SELECT t.ID as ToolID,
s.CompanyID as CompanyID,
COALESCE(s.Tool, t.Tool) as Tool
FROM Tools t
LEFT OUTER JOIN CompanySpecialTools s ON s.ToolID = t.ID
UNION ALL
SELECT ID as ToolID,
null as CompanyID,
Tool
FROM Tools

添加 GROUP BY 会产生所需的结果。

SELECT * FROM myview where companyID=1 OR companyID is null GROUP BY ToolID

关于MySQL View 的全连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41233049/

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