首页 > 解决方案 > 如何在 SQL 中使用多个 WHERE?

问题描述

我有两张桌子:

Table A: ticket
RoundID | PlayerID | num1 | num2 | num3 | num4 | num5 | num6

Table B: lotteryresult
RoundID | num1 | num2 | num3 | num4 | num5 | num6

我创建了一个选择器:

SELECT roundID, UserInfo_ID, num1, num2, num3, num4 , num5, num6
FROM ticket JOIN lotteryresult ON ticket.roundID = lotteryresult.roundID
WHERE...; -- I want to match num1 to num6 to find matched numbers

问题是我不知道如何将 num1 与 num6 匹配,困难在于位于表 A 的 num1 中的数字(例如“6”)可能位于表 B 的 num3 中。

那么我该怎么做才能匹配这些数字呢?

标签: sql

解决方案


我不确定目标是什么:

where
    a.num1 in (b.num1, b.num2, b.num3, b.num4, b.num5, b.num6) or
    a.num2 in (b.num1, b.num2, b.num3, b.num4, b.num5, b.num6) ...

或者,也许你想计算比赛?

select *
from ticket t inner join lotteryresult r on r.roundID = t.roundID
    cross apply (
        select sum(case when pvt.num in (r.num1, r.num2, r.num3, r.num4, r.num5, r.num6) then 1 end
        from (values (t.num1), (t.num2), (t.num3), (t.num4), (t.num5), (t.num6k)) pvt(num)
) m(matches)

推荐阅读