长SQL子查询的麻烦

时间:2018-10-31 19:49:21

标签: sql sql-server

我刚注册并想问。 我学习SQL查询的时间不是很长,当我决定将表移动到另一个数据库时遇到了麻烦。阅读了一些有关构建长子查询的文章,但它们对我没有帮助。 在执行我的操作之前,一切工作都非常完美。 我只是移动了桌子,试图整天重写查询。

update [dbo].Full
set [salary] = 1000
where [dbo].Full.id in (
    select distinct k1.id
    from (
        select id, Topic, User 
        from Full
        where User not in (select distinct topic_name from [DB_1].dbo.S_School)
    ) k1
    where k1.id not in (
        select distinct k2.id
        from (
            select id, Topic, User 
            from Full 
            where User not in (select distinct topic_name from [DB_1].dbo.Shool)
        ) k2,
        List_School t3
        where charindex (t3.NameApp, k2.Topic)>5
    )
)

我将表List_School移到了数据库[DB_1]上,我无法屈服。 我不能写[DB_1].dbo.List_School。我应该再使用一个子查询吗? 我什至考虑过创建一些临时表,但这会影响执行速度。

SQL专家,请花一些时间在我身上。先感谢您。

对于您给我的每个提示,我都会感到高兴。

1 个答案:

答案 0 :(得分:0)

似乎有很多问题。您正在将用户列与topic_name列进行比较。这些列名称的预期含义可能表明您没有比较正确的列。但这是一个猜测。

在最后一个子查询中,表List_School上具有ansi联接,但没有联接列,这意味着联接witk k2是笛卡尔积(又名交叉联接),这在大多数情况下都不是您想要的。再次猜测,因为没有提供实际问题数据或错误消息的详细信息。

相关问题