mysql查询多个字段

时间:2017-06-07 16:12:29

标签: mysql

我正在使用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得到我想要的东西?

非常感谢任何帮助...

1 个答案:

答案 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