我需要比较来自两个不同表的结果以获得出现次数

时间:2012-01-22 14:41:01

标签: sql join count compare procedure

我有一个包含2个表的数据库: 表1是条目(userID,number1,number2,number3,number4,number5,number6) 表2是结果(number1,number2,number3,number4,number5,number6)

条目表存储了针对每个用户ID猜测的6个数字,并且已经有大约1,200行。 Result表存储了6个数字,只有一行。

现在的问题是:

我需要生成一份报告 1.将Result表中的6个数字与Entries表的每一行进行比较 2.计算用户猜对的数字。

例如, 如果结果是1,2,3,4,5,6和 userA猜测1,3,5,7,9,11,然后userA用户的正确猜测数为3。 如果userB猜到2,8,11,12,13,24,则userB的正确猜测数为1。 如果userC猜测23,24,25,26,27,28,那么userC的正确猜测数为0。

因此,我的报告需要包含1,200行,包含2列(userID和Correct_Number_of_Guesses)。

解决此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

SELECT userID
     , Case When t1.number1 = t2.number1 Then 1 Else 0 End +
          Case When t1.number2 = t2.number2 Then 1 Else 0 End +
          Case When t1.number3 = t2.number3 Then 1 Else 0 End +
          Case When t1.number4 = t2.number4 Then 1 Else 0 End +
          Case When t1.number5 = t2.number5 Then 1 Else 0 End +
          Case When t1.number6 = t2.number6 Then 1 Else 0 End as CorrectGuesses
  FROM Table1 t1
  cross join Table2 t2

答案 1 :(得分:0)

使用MySQL IF syntax

SELECT 
     userID,
      if( t1.number1 = t2.number1, 1, 0 )+
      if( t1.number2 = t2.number2, 1, 0 )+
      if( t1.number3 = t2.number3, 1, 0 )+
      if( t1.number4 = t2.number4, 1, 0 )+
      if( t1.number5 = t2.number5, 1, 0 )+
      if( t1.number6 = t2.number6, 1, 0 ) 
     as Correct_Number_of_Guesses
  FROM 
     Table1 t1
       cross join 
     Table2 t2