如何通过重复第二个表中的列值来排序一个表中的记录

时间:2019-05-15 18:46:55

标签: mysql

user_contest_image

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| user_id  | int(11)      | YES  | MUL | NULL    |                |
| filename | varchar(255) | YES  |     | NULL    |                |
| title    | varchar(255) | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

image_vote

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| image_id | int(11)      | YES  | MUL | NULL    |                |
| ip       | varchar(255) | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

image_vote.image_iduser_contest_image.id的外键。 我正在尝试从user_contest_image获取所有记录,并按相关image_vote.image_id的重复顺序对其进行排序。

示例数据:

user_contest_image

id  user_id  filename     title
1   1        image_1.png  imageTitle1
2   2        image_2.png  imageTitle2

image_vote

id  image_id  ip
1   2         127.0.0.1
2   1         127.0.0.1
3   2         127.0.0.1

两次image_id的值为2,一次为1。 我正在尝试像这样订购结果:

user_contest_image.id user_contest_image.filename
2                     image_2.png
1                     image_1.png

我没有提供工作示例,因为我真的不知道该怎么做。

2 个答案:

答案 0 :(得分:2)

加入表格,按图像ID分组,添加COUNT(image_vote.id)字段,然后按该字段排序。

答案 1 :(得分:1)

查看数据似乎需要图像投票的订购结果

select user_contest_image.id , filename 
from  user_contest_image 
inner join  image_vote on image_vote.image_id = user_contest_image.id  
group by  user_contest_image.id, user_contest_image.file_name 
order by count(image_vote.image_id)  DESC