gpt4 book ai didi

MySQL 将 JOIN 语句转换为存储过程或函数?

转载 作者:行者123 更新时间:2023-11-29 01:02:47 25 4
gpt4 key购买 nike

所以我有一个 JOIN 语句,我将在多个地方使用它。它基本上找到一个 IP 地址并将其与中间表中的所述位置相匹配。我需要传入两个变量——一个是我的数据库/模式的前缀,另一个是 IP 地址本身。
因此使用 CONCAT() 函数将其拼凑起来。

所以目前我有一个看起来像这样的程序:

CREATE DEFINER=`root`@`%` PROCEDURE `LocationFromIp`(
ipAddress VARCHAR(16),
clientComp VARCHAR(32)
)
BEGIN

DECLARE test VARCHAR(255);

SET @networkSql = CONCAT("
SET @Location =
(SELECT `network`.`Name`
FROM `", clientComp, "-settings`.`iptable` AS `iptable`
LEFT JOIN `", clientComp, "-settings`.`network` AS `network`
ON `network`.`Subnet` = `iptable`.`Subnet`
WHERE `iptable`.`IP` = '", ipAddress, "'
LIMIT 1);
");

PREPARE test1 FROM @networkSql;
EXECUTE test1;

SELECT @Location AS `Location`;

它返回我想要的结果,但我不知道如何在语句中使用它。

SELECT `IPAddress` AS CALL LocationFromIp('clientComp', `IPAddress`)
(
SELECT `IPAddress`
FROM `clientComp-data`.`tablename`
WHERE @date > `Date`;
)
GROUP BY `IPAddress`

以上都不行,希望大家能看懂我的思路!

那我该怎么做呢?

最佳答案

为什么您不能调整您的存储过程以从一开始就包含您需要的所有字段?

关于MySQL 将 JOIN 语句转换为存储过程或函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30796785/

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