【问题标题】:I need to compare results from two different tables to get the number of occurrence我需要比较两个不同表的结果以获取出现次数
【发布时间】:2012-01-22 14:41:01
【问题描述】:

我有一个包含 2 个表的数据库: 表 1 是 Entries (userID, number1, number2, number3, number4, number5, number6) 表2为Result(number1, number2, number3, number4, number5, number6)

Entries 表存储了为每个用户 ID 猜测的 6 个数字,并且已经有大约 1,200 行。 结果表存储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)。

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

【问题讨论】:

    标签: sql join count compare procedure


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      与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
      

      【讨论】:

        猜你喜欢
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-07
        • 1970-01-01
        相关资源
        最近更新 更多