gpt4 book ai didi

MySQL 多个结果集的乘积

转载 作者:行者123 更新时间:2023-11-30 00:35:48 24 4
gpt4 key购买 nike

假设我有多个结果集,每个结果集具有相同的列数。但我可能有 5 个结果集,或 10 个结果集。

我需要根据这些结果集制作一个产品。在数学上应该写成A * B * C * D ... * N

我可以使用 SQL 语句实现此目的吗?到目前为止,我知道如果我有特定数量的自连接,我可以做到这一点。我可以做类似的事情

SELECT tcs1.*, tbl1.*, tbl2.*, tbl3.*, CONCAT(tbl1.actual_id, tbl2.actual_id, tbl3.actual_id) as new_test_case_name
FROM test_config_sets tcs
LEFT JOIN test_config_sets tcs1 ON tcs.test_case = tcs1.test_case
CROSS JOIN (SELECT tcd.actual_id
FROM test_config_profiles tcp
LEFT JOIN test_config_data tcd ON tcp.id = tcd.profile
WHERE tcp.id = 649) as tbl1
CROSS JOIN (SELECT tcd.actual_id
FROM test_config_profiles tcp
LEFT JOIN test_config_data tcd ON tcp.id = tcd.profile
WHERE tcp.id = 188) as tbl2
CROSS JOIN (SELECT tcd.actual_id
FROM test_config_profiles tcp
LEFT JOIN test_config_data tcd ON tcp.id = tcd.profile
WHERE tcp.id = 189) as tbl3
WHERE tcs.test_config_profile = 649 AND tcs1.test_case = 400
GROUP BY new_test_case_name
ORDER BY tcs1.test_case ASC, tcs1.sequence ASC;

在此示例中,我有特定的 3 组数据:tbl1、tbl2 和 tbl3。即使我有 N 组数据,如何将其扩展为足够动态以返回结果?

最佳答案

CROSS JOIN 可以使用如下:

SELECT tcs.*, tcp.*, tcd.*
FROM test_config_sets tcs
CROSS JOIN test_config_profiles tcp
CROSS JOIN test_config_data tcd

例如,如果表有 2 行、4 行和 5 行,则输出结果集将包含 2*4*5 行。在CROSS JOIN中,表的每一行都与其所连接的其他表的每一行相连接。

关于MySQL 多个结果集的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22190854/

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