SQL JOIN和And Clause有一些条件

时间:2014-03-27 06:36:01

标签: mysql sql sql-server

这是我的SQL查询:

SELECT run.RN_CYCLE_ID ,test.[TS_EXEC_STATUS] , count(test.[TS_EXEC_STATUS]) 
FROM [td].[TEST] test 
INNER JOIN [td].[RUN] run 
ON test.TS_TEST_ID = run.RN_TEST_ID
 And run.RN_TEST_ID IN   
     (SELECT DISTINCT rn_test_id FROM [td].[RUN] WHERE [RN_CYCLE_ID] IN (12973 , 13794) )
GROUP BY  test.[TS_EXEC_STATUS] , run.RN_CYCLE_ID  order by run.RN_CYCLE_ID; 

这显示的数据不仅适用于RN_CYCLE_ID - 12973和13794。

但也适用于其他一些RN_CYCLE_ID。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

SELECT run.RN_CYCLE_ID ,test.[TS_EXEC_STATUS] , count(test.[TS_EXEC_STATUS]) 
FROM [td].[TEST] test 
    INNER JOIN [td].[RUN] run 
    ON test.TS_TEST_ID = run.RN_TEST_ID
WHERE run.[RN_CYCLE_ID] IN (12973 , 13794) 
GROUP BY  test.[TS_EXEC_STATUS] , run.RN_CYCLE_ID  
order by run.RN_CYCLE_ID; 

答案 1 :(得分:0)

@ br001: 您好,欢迎来到Stackoverflow,

如果您尝试使用where代替And并且它也没有工作,那么我会说您应该分解查询并检查每个级别。 您可以采取以下措施:

1)删除group byorder by - 并检查结果。

2)检查inner query是否给出了正确的结果 - 检查

SELECT DISTINCT rn_test_id FROM [td].[RUN] WHERE [RN_CYCLE_ID] IN (12973 , 13794)

3)只检查一个条件 - 即检查[RN_CYCLE_ID] = 12973[RN_CYCLE_ID] = 13794并检查结果。

4)此外,每一步都要检查您是否有任何损坏的数据。

否则,我猜查询是正确的。(至少我没有看到任何错误)