Только одно выражение может быть указано в списке выбора, когда подзапрос не вводится с помощью EXISTS в SQL Server

#sql #sql-server #sql-server-2008

#sql #sql-сервер #sql-server-2008

Вопрос:

Когда я задаю условие с помощью запроса select и сохраняю в переменной, и в этом условии я задаю запрос insert в то время, когда возникают эти проблемы

Вот мой запрос

 create table #temp
(
    productid int
) 

--Insert into #temp
Insert into #temp
    select Product.Id 
    from Product 
    left join mysql_abc_Product on mysql_abc_Product.ProductId = Product.ID
    where mysql_abc_Product.ProductId is NULL

Declare @maxCount int = (select count(productId) from #temp)

WHILE(@i <= @maxCount)
BEGIN
    select * from #temp

    declare @ModelID int
    SET @ModelID = (select DISTINCT tmp.ProductId, s.Id, l.Id 
                    from Language l, Store s, #temp tmp, Product p 
                    left join mysql_abc_Product isp on isp.ProductId = p.Id  
                    where isp.Id is NULL 
                      and p.Deleted = 'False' 
                       or p.Published = 'True' 
                       or VisibleIndividually = 'True')

    if(@ModelID > 0)
        Insert into mysql_abc_Product(ProductId, SolrStatus, IsDeleted, InTime, StoreId, LanguageId) 
            select DISTINCT 
                tmp.ProductId, 1, 0, GETDATE(), s.Id, l.Id 
            from  
                Language l, Store s, #temp tmp, Product p 
            left join 
                mysql_abc_Product isp on isp.ProductId = p.Id  
            where 
                isp.Id is NULL 
    else
        Insert into mysql_abc_Product(ProductId, SolrStatus, IsDeleted, InTime, StoreId, LanguageId) 
            select DISTINCT 
                tmp.ProductId, 1, 0, GETDATE(), s.Id, l.Id 
            from  
                Language l, Store s, #temp tmp, Product p 
            left join 
                mysql_abc_Product isp on isp.ProductId = p.Id  
            where 
                isp.Id is NULL 

        SET @i  = @i    1
    END

    drop table #temp
END
  

Комментарии:

1. Вредные привычки для устранения: использование объединений в старом стиле — этот стиль списка таблиц, разделенных запятыми, в старом стиле был заменен на надлежащий синтаксис ANSI в стандарте SQL ANSI- JOIN 92 ( более 20 лет назад), и его использование не рекомендуется. …………………. ( И вам определенно не следует их смешивать!!