u_order_ml表中 relcode ,status_mode ,wrkGrpid ,opdate ,saletaskcode ,mtrlid 查询这6个列名数据同时相同的数据。6个都要相同,少一个都不行。现不知道为何查询出来的数据都只是部分相同,另外还想请教下如果加入其它表交叉查询行不行
inner join u_sc_wkp on u_Order_ml.wrkGrpid = u_sc_wkp.wrkGrpid
LEFT OUTER JOIN u_mtrldef on u_order_ml.mtrlid=u_mtrldef.mtrlid耐心等待高手指教SQL重复查询交叉查询

解决方案 »

  1.   

    这个试试,哪些不相同
    select relcode ,status_mode ,wrkGrpid ,opdate ,saletaskcode ,mtrlid,count(1) from u_order_ml
    group by relcode ,status_mode ,wrkGrpid ,opdate ,saletaskcode ,mtrlid下面那个sql可能原因 ,inner join 关联不上
      

  2.   

    1楼说的没错,如果你字段要全部相同,那么在inner join中,用and 把6个列要相同的条件都添加上。
    比如:
    inner join u_sc_wkp on u_Order_ml.wrkGrpid = u_sc_wkp.wrkGrpid
    and u_Order_ml.relcode = u_sc_wkp.relcode 
    and ....可以对于任意多个表进行交叉查询,你只要有表格之间的关系条件就行。
      

  3.   

    1:你6列中数据类型、长度是否相同
    2:你认为的相同包含因为显示的内容相同,但是可能存在空格select relcode ,status_mode ,wrkGrpid ,opdate ,saletaskcode ,mtrlid,count(1) from u_order_ml
     group by relcode ,status_mode ,wrkGrpid ,opdate ,saletaskcode ,mtrlid
    这个确实可以试一试,看看到底是什么原因导致
      

  4.   


    如果是本表u_Order_ml中6个列都相同。你join on怎样写 怎样6个列全部加上。另外数据只有主表u_Order_ml有,其他2个表只是为了显示ID对应数据而写的。
      

  5.   

    select relcode ,status_mode ,wrkGrpid ,opdate ,saletaskcode ,mtrlid,count(1) from u_order_ml
    group by relcode ,status_mode ,wrkGrpid ,opdate ,saletaskcode ,mtrlid
    having count(1) > 1
    count(1)=1 表示relcode ,status_mode ,wrkGrpid ,opdate ,saletaskcode ,mtrlid 有部分相同或都不同,count(1)>1 表示 relcode ,status_mode ,wrkGrpid ,opdate ,saletaskcode ,mtrlid 都想同
      

  6.   


    很早我就试过了这个了,但是不知道不行,理论上来说是可以的,不知道是不是因为列里面有一个万恶的datatime类型,有datatime巨麻烦的.
    我附图给各位大神看看 
      

  7.   

    select relcode ,status_mode ,wrkGrpid ,CONVERT(varchar(100), opdate, 120),saletaskcode ,mtrlid,count(1) from u_order_ml
    group by relcode ,status_mode ,wrkGrpid ,CONVERT(varchar(100), opdate, 120),saletaskcode ,mtrlid
    having count(1) > 1或者
    CONVERT(varchar(100), opdate, 23) 替换
    CONVERT(varchar(100), opdate, 120) 表示,日期格式化年月日,不包括时分秒