设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > MySql教程 > 正文

如何在mySQL中分类为动态生成的特定顺序?

发布时间:2021-01-18 22:06 所属栏目:115 来源:网络整理
导读:我一直在为此绞尽脑汁,但没有取得任何进展.我对SQL不太好,所以我希望答案很简单,我只是不知道. 我有2个表:一个名为“ images”的表,其中包含我想要的数据,并用主键“ imageID”进行组织.另一个称为“ productPhotos”,它包含两个字段(加上主键):imageID和p

我一直在为此绞尽脑汁,但没有取得任何进展.我对SQL不太好,所以我希望答案很简单,我只是不知道.

我有2个表:一个名为“ images”的表,其中包含我想要的数据,并用主键“ imageID”进行组织.另一个称为“ productPhotos”,它包含两个字段(加上主键):imageID和productID.因此,对于给定的产品,可能会有多个图像,并且给定的图像可能用于表示多个产品.

到目前为止,它运行良好,但是问题来了.我有一个动态生成的产品ID列表,我想加载代表这些产品的所有图像.而且,我不仅要加载它们,而且还希望按照列表中产品的顺序进行加载.

因此,如果我的产品列表是“ 5、2、4”,我希望我的输出列表首先包含产品5的所有图像,然后是产品2的所有图像,然后是产品4的所有图像.请特别注意子组中的顺序.

获取正确的图像非常简单,但是以正确的顺序获取它们是可恶的.我想出了如何以正确的顺序获取想要的图像的ID,但是到目前为止,实际上我没有获得单独的MySQL调用就获取了这些图像.我尝试设置一个临时表,将所需的ID存储在@variable中,并在ORDER BY FIELD()和ORDER BY FIND_IN_SET()上进行了许多不同的更改.

到目前为止,这是我得到的:
????从productPhotos中选择imageID,在productID为(5,2,4)的情况下按字段排序(specificProductUID,5、2、4);

这样就成功地按正确的顺序返回了一组imageID,但是我一直受困于从那里获取来自image表的那些imageID的数据.我知道我可以很容易地做到这一点,只需在PHP中使用两个单独的数据库调用(一个用于获取imageID,另一个用于加载图像),但是(我认为)这将对性能产生重大影响,而且看起来应该有更好的方法来做到这一点.

在此先感谢您的帮助.

最佳答案
SELECT images.*
FROM images
INNER JOIN productPhotos ON images.imageID = productPhotos.imageID
WHERE productID in (5,4)
ORDER BY FIELD(specificProductUID,5,4);

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读