gpt4 book ai didi

sql - 可以提取我正在寻找的数据的 MySQL 查询?

转载 作者:可可西里 更新时间:2023-11-01 08:22:35 26 4
gpt4 key购买 nike

在我正在从事的项目中,我坚持使用 Hades 的表结构。需要牢记两点:

  1. 我现在无法更改表结构。我暂时坚持使用它。
  2. 查询是动态生成的,不是硬编码的。因此,虽然我要求的查询可以提取这些数据,但我真正在努力的是一种算法,它将生成我需要的查询。

希望我能解释这个问题,而不会让你的眼睛呆滞和大脑崩溃。

我们有一个实例表,看起来(简化)如下:

InstancesInstanceID    active1              Y2              Y3              Y4              N5              Y6              Y

然后,沿着这些线有多个数据表:

Table1InstanceID    field1   reference_field21             John      52             Sally        NULL3             Fred          64             Joe          NULLTable2InstanceID    field3 5              16              1Table3InstanceID    fieldID    field45               1        Howard5               2        James6               2        Betty

请注意表 1 中的 reference_field2 包含对另一个实例的引用。Table2 中的 Field3 稍微复杂一些。它包含表 3 的字段 ID。

我需要的是一个查询,它将为我提供如下列表:

InstanceID    field1     field4     1              John      Howard2              Sally3              Fred

问题是,在我目前的查询中,我没有得到 Fred,因为 Table3 中没有 fieldID 1 和 InstanceID 6 的条目。所以,到目前为止我能得到的最好的列表是

InstanceID    field1     field4     1              John      Howard2              Sally

本质上,如果表1中有字段2的条目,而表3中没有字段2中包含instanceID和字段3中包含字段ID的条目,我不会从字段1中获取数据.

我一直在研究联接,直到脸色发青,但我看不出有什么方法可以处理 table3 没有条目的情况。

最佳答案

左连接...

SELECT a.InstanceID, b.field1, d.field4
FROM instances AS a
JOIN Table1 AS b ON a.InstanceID = b.InstanceID
LEFT JOIN Table2 AS c ON b.reference_field2 = c.InstanceID
LEFT JOIN Table3 AS d ON (c.InstanceID = d.InstanceID AND c.field3 = d.fieldId)
WHERE a.active = 'Y'

两个左连接应该处理没有其他行的情况...

关于sql - 可以提取我正在寻找的数据的 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3054592/

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