【问题标题】:Optimized select query for two tables with condtions优化带条件的两张表的select查询
【发布时间】:2020-04-04 19:55:34
【问题描述】:

亲爱的,

我有一种情况,我需要编写一个 SQL 查询才能从一个表中获取记录。 例如说我有两个表,TblParent 和 TblChild 我需要 TblChild 表中的记录,如下所示,

SELECT * FROM TblParent WHERE condition_1 AND condition_2 AND condition_3: //possible many records

     //for each parent
     SELECT * FROM TblChild WHERE TblChild.fld1 = TblParent.fld1 AND TblChild.fld2 = TblParent.fld2
                              AND TblChild.fld3 > 0 ......

基本上我只需要 TblChild 记录,但为了获取它们,我需要使用条件查询 TblParent,并且对于每个条件,我需要获取相关的 TblChild 记录。

由于我是 SQL 新手,不确定在优化方面选择的最佳方法,请帮我为上述场景编写一个查询。

提前谢谢你。

【问题讨论】:

    标签: sql join select optimization


    【解决方案1】:
    SELECT tc.*
    FROM TblParent INNER JOIN
         TblChild tc
         ON tc.fld1 = TblParent.fld1 AND 
            tc.fld2 = tc.fld2 AND
            tc.fld3 > 0
    WHERE condition_1_on_TblParent AND condition_2_on_TblParent AND condition_3_on_TblParent
    

    【讨论】:

    • 谢谢 Onkar 和 Gordon LinOff,这按预期工作。
    【解决方案2】:

    只需将您的父查询添加到子查询中:

    SELECT * FROM TblChild, 
         (SELECT * FROM TblParent WHERE condition_1 AND condition_2 AND condition_3) parents
         WHERE TblChild.fld1 = parents.fld1 
          AND TblChild.fld2 = parents.fld2
          AND TblChild.fld3 > 0 ......
    

    【讨论】:

    • 谢谢 draz,在添加缺少的“作为父母”后,这按预期工作
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多