我有一个包含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)。
解决此问题的最佳方法是什么?
答案 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)
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