【问题标题】:sub query in sql errorsql子查询出错
【发布时间】:2017-01-17 10:37:28
【问题描述】:

我想应用子查询我这样做但是这显示一个错误

select          t.Tid, 
            i.Description,          
            tst.Description,
            dd.DoID,
            dd.Document,
            dd.docname  
                
    from    Ticet t 
        (
            select tid, MIN(hid) hid from TtH th group by Tid
        ) mh
    inner join DocDown dd on t.clientid=dd.Clientid
    inner join Item i on t.Itemid=i.Itemid
    inner join TStat tst on t.Status=tst.Status
    where 
     t.Status in (1, 2 )
    and gu.Userid=1926
    
    order by t.Tid

错误

关键字“select”附近的语法不正确。

')' 附近的语法不正确。

【问题讨论】:

    标签: sql-server subquery


    【解决方案1】:

    请为 mh 添加子查询:

    select t.Tid, i.Description, tst.Description, dd.DoID, dd.Document, dd.docname  
    from   Ticet t 
    inner join ( select tid, MIN(hid) hid from TtH th group by Tid ) as  mh on t.Tid=mh.tid
    inner join DocDown dd on t.clientid=dd.Clientid
    inner join Item i on t.Itemid=i.Itemid
    inner join TStat tst on t.Status=tst.Status
    where t.Status in (1, 2 ) and gu.Userid=1926
    order by t.Tid
    

    【讨论】:

      【解决方案2】:

      试试下面的查询,你错过了jointmh 的条件

      select  t.Tid, 
              i.Description,          
              tst.Description,
              dd.DoID,
              dd.Document,
              dd.docname  
      
      from    Ticet t 
          inner join    (
                  select tid, MIN(hid) hid from TtH th group by Tid
              ) mh    on mh.tid = t.Tid
          inner join DocDown dd on t.clientid=dd.Clientid
          inner join Item i on t.Itemid=i.Itemid
          inner join TStat tst on t.Status=tst.Status
      where t.Status in (1, 2 )
          and gu.Userid=1926
      order by t.Tid
      

      【讨论】:

        【解决方案3】:

        这个

        from    Ticet t 
        (
        select tid, MIN(hid) hid from TtH th group by Tid
        ) mh
        

        应该是

           from    Ticet t 
            JOIN
                (
                    select tid, MIN(hid) hid from TtH th group by Tid
                ) mh
        on mh.somecol =t.somecol
        and so on
        

        【讨论】:

          【解决方案4】:

          你需要加入你的子查询表...

          假设 mh.tid = t.tid 是您想要的连接。

          SELECT t.Tid, i.Description, tst.Description, dd.DoID, dd.Document, dd.docname  
          FROM Ticet t 
          INNER JOIN (SELECT tid, MIN(hid) hid FROM TtH th GROUP BY Tid) mh ON mh.tid = t.Tid
          INNER JOIN DocDown dd ON t.clientid = dd.Clientid
          INNER JOIN Item i ON t.Itemid = i.Itemid
          INNER JOIN TStat tst ON t.Status = tst.Status
          WHERE t.Status IN (1, 2)
          AND gu.Userid = 1926
          ORDER BY t.Tid
          

          【讨论】:

            猜你喜欢
            • 2022-12-11
            • 2016-07-10
            • 1970-01-01
            • 1970-01-01
            • 2017-05-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多