gpt4 book ai didi

mysql - 从mysql中的状态表中提取多个值

转载 作者:行者123 更新时间:2023-11-30 21:56:39 24 4
gpt4 key购买 nike

我有 3 个表,其中 2 个包含数据,一个包含另外两个的状态。

A包含数据
B 包含数据
S 包含 A 和 B 的状态值

状态表条目示例:

status Table

我正在尝试构建一个查询以从 A 和 B 中提取一系列数据条目的所有状态。期望结果示例:

result Table

我已经有一段代码可以运行,但速度真的很慢,尤其是因为有大约 10 个状态,有时一次有数百个条目。

select S.owner, S.foreign_key,
s1 as ordered_Status, s2 as payed_Status, s3 as dispached_Status
from S as s1, S as s2, S as s3
where s1 like '%ordered%'
and s2 like '%payed%'
and s3 like '%dispached%'
group by S.foreign_key;

我选择 foreign_key 的标准也没有在这里显示,但你可以想象它会进一步减慢查询速度。必须有一种更有效的方法来提取此信息。

我不确定它是否相关但是对于表 A 和 B 的结构:

表A:
enter image description here
表B:
enter image description here

我根据产品和时间进行选择。基于新信息更新后的 sql 查询将是:

select S.owner, S.foreign_key,
s1 as ordered_Status, s2 as payed_Status, s3 as dispached_Status
from S as s1, S as s2, S as s3, A, B
where s1 like '%ordered%'
and s1.foreign_key=A.id
and s2 like '%payed%'
and s2.foreign_key=A.id
and s3 like '%dispached%'
and s3.foreign_key=B.id
and B.fk_A=A.id
and B.fk_product=99
and A.date_created > '2017-07-04 08:00:00'
group by S.foreign_key;

最佳答案

由于您在查询中进行了多次自联接,查询速度非常慢。您可以使用如下的 case when 语句获得所需的输出,

case(when(status_name='ordered' and status=1 then 1 else 0)) as ordered_status

关于mysql - 从mysql中的状态表中提取多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44923646/

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