【发布时间】:2020-10-26 05:32:42
【问题描述】:
我有两个如下所示的表格。
表历史记录:
+------+------+------+-----+------+------+
| fir | sec | thi | fou | fif | six |
+------+------+------+-----+------+------+
| 10 | 23 | 29 | 33 | 37 | 40 |
| 9 | 13 | 21 | 25 | 32 | 42 |
| 11 | 16 | 19 | 21 | 27 | 31 |
| 14 | 27 | 30 | 31 | 40 | 42 |
| 16 | 24 | 29 | 40 | 41 | 42 |
| 14 | 15 | 26 | 27 | 40 | 42 |
| 2 | 9 | 16 | 25 | 26 | 40 |
| 8 | 19 | 25 | 34 | 37 | 39 |
| 2 | 4 | 16 | 17 | 36 | 39 |
| 9 | 25 | 30 | 33 | 41 | 44 |
| 1 | 7 | 36 | 37 | 41 | 42 |
| 2 | 11 | 21 | 25 | 39 | 45 |
| 22 | 23 | 25 | 37 | 38 | 42 |
| 2 | 6 | 12 | 31 | 33 | 40 |
| 3 | 4 | 16 | 30 | 31 | 37 |
表格统计:
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
所以表历史记录有 6 列。所有 6 列都有不同的值,可以填充从 1 到 45 的值。 表 stats 的 id 列从 1 到 45。
我想要的是从表历史记录中计算“id”值,并将另一列作为结果。
我试过了
select id from stats as num right join (select count(*) as count from history where fir = num.id OR sec = num.id OR thi = num.id OR fou = num.id OR fif = num.id OR six = num.id) as r
但没用。
我可以通过一个查询获得我想要的结果吗?
【问题讨论】:
-
我建议更改您的表格设计并将所有六列移动到仅 一个 列中,并使用新的第二列来维护数据源。鉴于您当前的数据设计,您向我们提出的查询将非常难看。
-
每一列的数字是唯一的吗?
-
@Nick 不,它们不是唯一的