【问题标题】:How to select the records from a table which is not in the result of select Query(select query might be joins of 2 or more tables)如何从不在选择查询结果中的表中选择记录(选择查询可能是 2 个或多个表的连接)
【发布时间】:2016-02-03 15:17:13
【问题描述】:

考虑:

table t1(a,b,c)
table t2(a,d,e)
table t3(r,f,g)

select t1.a,t1.b,t1.c,t2.d,t2.e
from t1 join t2
on (t1.a=t2.a)

还需要根据t1.a和t3.r从t3表中选出不在上述查询结果中的记录

【问题讨论】:

    标签: mysql sql-server sql-server-2008


    【解决方案1】:

    如果t1.at3.r 之间存在关系,那么只需在表之间进行连接,例如

    select t1.a,
           t1.b,
           t1.c,
           t2.d,
           t2.e,
           t3.g
    from t1 
    join t2 on t1.a = t2.a
    join t3 on t1.a = t3.r;
    

    【讨论】:

      【解决方案2】:

      如果t1.at3.r 之间没有关系,那么:

      SELECT t1,*, t2.*, t3.*
      FROM t1
      JOIN t2 ON t1.a = t2.a
      JOIN t3 ON 1=1
      

      【讨论】:

        【解决方案3】:

        WHERE 子句中尝试NOT IN,如下所示:

        SELECT
            t3.*
        FROM
            t3 AS t3
        WHERE
            t3.r NOT IN
                (select t1.a
                 from t1 join t2
                 on (t1.a=t2.a))
        

        【讨论】:

          猜你喜欢
          • 2023-03-20
          • 1970-01-01
          • 2018-01-14
          • 2012-10-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多