gpt4 book ai didi

Mysql 查询——选择表中排名最高/排序的主题(连接)

转载 作者:行者123 更新时间:2023-11-29 07:04:02 24 4
gpt4 key购买 nike

场景:

我们有 5 个用户。 (用户表)每个用户最多有 10 个 img。 (图片表)这 10 张图片可以订购 1 – 10。(图片表)每个 img 可以列在多个类别中(假设有 5 个类别——鸟类、蜜蜂、兔子、大脑、白鲸(类别表通过存储 img_ids 和 category_ids 的表连接到 img 表)

在搜索类别时,假设有人选择了蜜蜂。搜索应该在该类别中找到所有用户最接近 #1 img 的图像。因此,如果每个用户在蜜蜂类别中有 3 张图像,按数字 4、7 和 9 排序,则搜索应该显示第 4 个最接近数字 1。

我不断得到的结果到处都是,几乎就像是通过将图像添加到数据库中来选择图像。

SELECT i.img_name, i.ordered, a.user_name, c.keyword, c.cat_id
FROM images AS i JOIN artists AS a USING (user_id)
JOIN img_cat_table AS im USING ( img_id )
JOIN catkeys AS c USING (cat_id)
WHERE ( cat_id = 3) // THE BEES ID #
GROUP BY user_id ORDER BY user_name DESC

最佳答案

我也不确定您是要以正确的顺序显示所有相关图像,还是只显示最上面的图像。假设是后一种情况,您将需要加入一个子查询或 View ,返回每个用户类别的最低排名:

SELECT i.img_name, i.ordered, a.user_name, c.keyword, c.cat_id
FROM images AS i JOIN artists AS a USING (user_id)
JOIN img_cat_table AS im USING ( img_id )
JOIN catkeys AS c USING (cat_id)
JOIN (
SELECT user_id, min(img_rank) img_rank
FROM images AS i
JOIN artists AS a on i.user_id = a.user_id
JOIN img_cat_table AS im on im.img_id = i.img_id
JOIN catkeys AS c on c.cat_id = i.cat_id
WHERE ( cat_id = 3) ) x on x.user_id = a.user_id and x.img_rank = img_rank
WHERE c.cat_id = 3

我不确定保存图像排名的列的名称是什么。我称之为 img_rank。希望这会给您带来灵感

关于Mysql 查询——选择表中排名最高/排序的主题(连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8434909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com