gpt4 book ai didi

mysql - 使用 temptable 搜索项目的历史记录

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

我接到一项任务,要检查某件商品的更改情况以及更改为哪些子产品。我的逻辑是:我将使用一个函数来检查我的资源已变成哪些子产品,并重新运行该函数,直到没有创建子产品。我希望为我搜索过的每个子产品都有一个临时表(因此不会进入某种循环),并在另一个临时表中插入从我的函数搜索到的每个产品。该函数将使用第一个产品重复自身,插入生成的产品后将删除顶部的产品(我的函数使用的产品,因此当表清空时有一个终点)。我陷入困境,因为我找不到可行的方法来完成这项工作。这是我的代码的片段。

我尝试插入到不存在的地方,但无法正确执行。

declare @item NVARCHAR(250)
declare @return NVARCHAR(250)
declare @resultstable TABLE ( [order] NVARCHAR(50),[return] NVARCHAR(50),[genItem] NVARCHAR(50),[BatchNo] NVARCHAR(50),[IsItem] NVARCHAR(50))
declare @tempSearch TABLE ( [Exists] NVARCHAR(50))

SET @item = -- my searching item


INSERT INTO @resultstable
SELECT *
FROM [dbo].[fuction] (@item)
INSERT INTO @tempSearch
SELECT TOP (1) [BatchNo] FROM @RESULTSTABLE
<小时/>
WHILE( (SELECT COUNT(*) FROM @resultstable)>0)
BEGIN
SET @return = (SELECT TOP(1) [return] FROM @resultstable)
----here is my problem in the if statement
IF(@return=(SELECT [Exists] FROM @resultstable WHERE [EXISTS] = @return ))

BEGIN

INSERT INTO @tempSearch
SELECT TOP (1) [return] FROM @resultstable

INSERT INTO @resultstable
SELECT *
FROM [dbo].[function] (@return)

DELETE TOP(1) FROM @resultstable

END
ELSE
BEGIN
DELETE TOP (1) FROM @resultstable
END
END

由于删除顶部语句,第一个临时表 @resultstable 中的预期输出应为 0。对于第二个表@tempSearch,我应该拥有已按给定顺序搜索的任何项目。大多数情况下,该函数使用的每个项目都会生成 3-6 个子产品。请记住,当我的函数产生 0 个结果(找不到任何生成的产品)时,该过程将停止。任何帮助将不胜感激,因为我在 SQL 方面没有太多经验。

最佳答案

您确定使用的是MySql吗?该语法看起来更像 sql-server。如果是sqlserver。请删除 mysql 标签并添加 sql-server 标签。然后,关于你的问题,我认为你必须将 IF 条件更改为:

IF(NOT EXISTS(SELECT TOP 1 [EXISTS] FROM @tempSearch WHERE [EXISTS] = @return ))

如果您的临时搜索表中不存在新的返回项,则继续执行您需要的操作。

也不确定你为什么要这样做:

INSERT INTO  @tempSearch
SELECT TOP (1) [BatchNo] FROM @RESULTSTABLE

关于mysql - 使用 temptable 搜索项目的历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56432524/

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