gpt4 book ai didi

mysql - 在 MYSQL 中,我们可以使用普通的 SELECT SQL 而不是使用存储过程来进行循环吗?

转载 作者:行者123 更新时间:2023-11-29 02:28:52 24 4
gpt4 key购买 nike

好的,她是我的问题。我有一个包含 3 列的表:C1、C2、C3

C1 - C2 - C3 M - is - M1N2 - is - N3M2 - is - M3M3 - is - M4N1 - is - N2M1 - is - M2 N - is - N1

所以当用户搜索“M1”时,系统会显示:

M1M2M3M4

当用户搜索“M3”时,系统会显示:

M3M4

当用户搜索“N”时,系统会显示:

NN1N2N3

显然,这种查询需要某种循环,即搜索“is”之后的任何单词,然后在该单词之后不断搜索单词。

我想在 MySQL 中使用普通的“选择 SQL”而不是使用存储过程来完成这项任务。但我不知道该怎么做。

我们必须使用“WITH”关键字吗?

如何在不使用存储过程的情况下进行上述查询?

最佳答案

因此,坚持不使用存储过程的要求,可以使用以下查询:

SELECT t1.C1 AS Value1, t2.C1 AS Value2, t3.C1 AS Value3, t4.C1 AS Value4
FROM your_table t1
LEFT JOIN your_table t2 ON t1.C3=t2.C1
LEFT JOIN your_table t3 ON t2.C3=t3.C1
LEFT JOIN your_table t4 ON t3.C3=t4.C1

它将返回结果,例如 M1 M2 M3 M4。如果您需要更多“循环”,您可以在查询中添加另一个 LEFT JOIN:

SELECT t1.C1 AS Value1, t2.C1 AS Value2, t3.C1 AS Value3, t4.C1 AS Value4, t5.C1 AS Value5
FROM your_table t1
LEFT JOIN your_table t2 ON t1.C3=t2.C1
LEFT JOIN your_table t3 ON t2.C3=t3.C1
LEFT JOIN your_table t4 ON t3.C3=t4.C1
LEFT JOIN your_table t5 ON t4.C3=t5.C1

You will however be limited in the number of tables you can join this way :

The maximum number of tables that can be referenced in a single join is 61.

您将需要使用服务器端语言(PHP?)来检查 Value2、Value3...ValueN 是否为空。

我的建议是使用存储过程,或者更改您的表架构以避免必须以这种方式在您的表中循环。

关于mysql - 在 MYSQL 中,我们可以使用普通的 SELECT SQL 而不是使用存储过程来进行循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16040165/

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