我正在使用mysql进行调查答案。 调查表的架构如下:
id | rating1 | rating2 | rating3 | rating4 | .... | rating20 |
1 10 10 2 8 .... 4
2 8 8 8 5 .... 7
正如您所看到的,评分1 - 评分20字段中插入了评分(从1到10)。
我可以使用此查询轻松地从每行的评级(1-20)字段中找到最大或最小分数:" SELECT最大(rating1,rating2 .. rating20)FROM TBL_SURVEY WHERE id = 1"对于id 1返回10。
但我不知道最高分属于哪个领域。我喜欢计算分数评分。对于id 1,来自rating1-rating20字段的10分或其他分数是多少?
有没有mysql查询?或者有没有办法通过PHP得到我想要的东西?
非常感谢任何帮助...
答案 0 :(得分:1)
我建议您将表格设计更改为:
id | rating_id | rating
1 | 1 | 10
1 | 2 | 10
1 | 3 | 2
1 | 4 | 8
etc.
通过这种改进和标准化的设计,我们可以使用如下查询找到最大评级及其对应的rating_id
:
SELECT t1.*
FROM ratings t1
INNER JOIN
(
SELECT id, MAX(rating) AS max_rating
FROM ratings
GROUP BY id
) t2
ON t1.id = t2.id AND
t1.rating = t2.max_rating
关于你的第二个问题,例如id
1有多少10个我们可以使用它:
SELECT COUNT(*)
FROM ratings
WHERE id = 1 AND rating = 10