【问题标题】:Searching the history of an item with temptable使用 temptable 搜索项目的历史记录
【发布时间】:2019-06-03 18:13:24
【问题描述】:

我被分配了一项任务来检查一个项目是如何变化的以及变成了哪些子产品。 我的逻辑是:我将使用一个函数来检查哪些子产品,我的资源已经变成并重新运行该函数,直到没有创建子产品。我想为我搜索过的每个子产品创建一个临时表(因此不会进入某种循环)和另一个临时表,我在其中插入从我的函数中搜索到的每个产品。该函数将使用第一个产品重复自身,并且在插入生成的产品后将删除最上面的产品(我的函数使用的那个,因此在表清空时有一个端点)。我被困住了,因为我找不到一种可行的方法来完成这项工作。这是我的代码片段。

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

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

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

【问题讨论】:

    标签: mysql sql database search


    【解决方案1】:

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

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

    如果您的 tempsearch 表中不存在新的返回项,请继续执行您需要的操作。

    也不知道你为什么这样做:

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

    【讨论】:

    • 关于您的第一个问题,这是 mssql。,关于最后一个片段,我将放入(如果我再次搜索过)我刚刚用于我的第一个函数的项目。以防万一它出现。
    • 看来这很有魅力!稍后会在我检查后更新。还是谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2021-06-12
    • 2019-12-24
    相关资源
    最近更新 更多