gpt4 book ai didi

MySQL 内连接(无行)

转载 作者:行者123 更新时间:2023-11-29 17:54:59 25 4
gpt4 key购买 nike

我有一个标准化的 MySQL 数据库,其想法是允许企业选择零个或多个营销序列,但更重要的是需要一些营销序列(现在我有 4 个,但列表可以生长)。所以我所做的就是按如下方式构建我的表格:

sequence
+-------------+------------------+-------+-------------+----------+
| sequence_id | customer_type_id | title | description | required |
| 1 | 1 | ... | ... | true |
| 2 | 1 | ... | ... | true |
| 3 | 1 | ... | ... | false |
| 4 | 2 | ... | ... | true |
| 5 | 3 | ... | ... | true |
| 6 | 4 | ... | ... | false |
+-------------+------------------+-------+-------------+----------+

business_sequence
+----------------------+-------------+-------------+
| business_sequence_id | business_id | sequence_id |
+----------------------+-------------+-------------+

customer_type_idbusiness_id 是外键字段,链接到描述客户类型(客户、前客户等)和企业信息(名称、地址等)分别。

我的序列表中有 required 列的原因是,如果企业决定不允许任何非必需的序列,那么该企业就不需要一行。毕竟,如果唯一不同的数据是 business_id 字段,则business_sequence 表中不需要有重复的行。

现在我要做的是从序列表中获取所有行和所有字段,其中business_sequence 表中的business_id 与参数化值匹配(例如,我将在第二)。我尝试使用的查询是:

SELECT 
s.*
FROM
`sequence` AS s
INNER JOIN `business_sequence` AS b ON b.`sequence_id` = s.`sequence_id`
WHERE
b.`business_id` = 1 AND
s.`required` = true;

但是,如果业务在序列表中没有行,则不会返回任何结果。我期望它返回 b.business_id = 1 中的 0 行,但我也期望它返回 4 个“必需”行(id:1、2、4 和 5)来自s.required = true

每当我取出 INNER JOIN 语句和 WHERE 子句的business_id 部分时,它实际上都会返回 4 个“必需”行。这让我相信,在我的原始查询中,因为 sequence 表中没有该特定business_id 的行,所以它不会返回任何内容。

综上所述,当 business_id 字段与参数化值匹配时,如何实现检索零行或更多行以及必填字段是否正确?

最佳答案

使用 OR 条件代替 AND 怎么样?

SELECT 
s.*
FROM
`sequence` AS s
INNER JOIN `business_sequence` AS b ON b.`sequence_id` = s.`sequence_id`
WHERE
b.`business_id` = 1 OR
s.`required` = true;

关于MySQL 内连接(无行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48937156/

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