Mysql 如何使用带内部联接的LIMIT?

Mysql 如何使用带内部联接的LIMIT?,mysql,limit,Mysql,Limit,我已经阅读了一些基于这些问题的常见问题,但我似乎没有找到一个与我希望做的事情相关的常见问题。我一点也不精通MYSQL,尤其是在复杂查询和子查询方面。我创建了三个表来存储通过php上传到文件夹的图像引用,这些表的结构如下所示 1.)对于主图像表: productImgTable: ------- -------- ------------------- |ImgID|ProdID| ImgURL. | ------- --------- ------------------

我已经阅读了一些基于这些问题的常见问题,但我似乎没有找到一个与我希望做的事情相关的常见问题。我一点也不精通MYSQL,尤其是在复杂查询和子查询方面。我创建了三个表来存储通过php上传到文件夹的图像引用,这些表的结构如下所示
1.)对于主图像表:

productImgTable: 
 ------- -------- ------------------- 
|ImgID|ProdID|   ImgURL.    |  
 ------- --------- ------------------ 
| 1.     | Xc332| 2_Xc332.jpg|
 ------- --------- ------------------ 
| 2.     |Yt3f4.  |5_Yt3f4.jpg.|
 ------- --------- ------------------                                                                                                                                              
对于第一个缩略图表(thumbLarge)

productImgTable: 
 ------- -------- ------------------- 
|ImgID|ProdID|   ImgURL.    |  
 ------- --------- ------------------ 
| 1.     | Xc332| 2_Xc332.jpg|
 ------- --------- ------------------ 
| 2.     |Yt3f4.  |5_Yt3f4.jpg.|
 ------- --------- ------------------                                                                                                                                              
对于第二个缩略图表(Thumbsall),我有:

productImgTable: 
 ------- -------- ------------------- 
|ImgID|ProdID|   ImgURL.    |  
 ------- --------- ------------------ 
| 1.     | Xc332| 2_Xc332.jpg|
 ------- --------- ------------------ 
| 2.     |Yt3f4.  |5_Yt3f4.jpg.|
 ------- --------- ------------------                                                                                                                                              
缩略图表(小和大)有一个外键列prodID,它引用主图像表。现在,我希望能够从productImgTable中选择一个ImgUrl,从thumbSmall表中选择2个ImgUrl,最后从thumbLarge表中选择1个ImgUrl。这是因为一个产品可以有多个缩略图以及多个主图像。因此,可以说,这些表具有多对多的关系

productImgTable: 
 ------- -------- ------------------- 
|ImgID|ProdID|   ImgURL.    |  
 ------- --------- ------------------ 
| 1.     | Xc332| 2_Xc332.jpg|
 ------- --------- ------------------ 
| 2.     |Yt3f4.  |5_Yt3f4.jpg.|
 ------- --------- ------------------                                                                                                                                              
我做了这样的事情:

productImgTable: 
 ------- -------- ------------------- 
|ImgID|ProdID|   ImgURL.    |  
 ------- --------- ------------------ 
| 1.     | Xc332| 2_Xc332.jpg|
 ------- --------- ------------------ 
| 2.     |Yt3f4.  |5_Yt3f4.jpg.|
 ------- --------- ------------------                                                                                                                                              
SELECT pi.prodID, pi.imgUrl
FROM productImage AS pi
INNER JOIN(SELECT tL.imgUrl FROM thumbLarge AS tL ON 
tL.imgID = pi.ImgID LIMIT 1)
INNER JOIN(SELECT ts.imgUrl FROM thumbSmall AS ts ON
ts.imgID = pi.imgID LIMIT 2)
WHERE prodID = ...
LIMIT 1

我那蹩脚的尝试没有产生任何结果。那么,请问什么是正确的方法呢?内部连接真的有必要吗?我知道显然有更明智、更专业的方法来做这件事,有人能告诉我怎么做吗?谢谢我已经知道我的尝试是站不住脚的,MYSQL现在可能正在地板上欢笑

你在找工会吗

productImgTable: 
 ------- -------- ------------------- 
|ImgID|ProdID|   ImgURL.    |  
 ------- --------- ------------------ 
| 1.     | Xc332| 2_Xc332.jpg|
 ------- --------- ------------------ 
| 2.     |Yt3f4.  |5_Yt3f4.jpg.|
 ------- --------- ------------------                                                                                                                                              
SELECT pi.prodID, pi.imgUrl
FROM productImage AS pi
WHERE prodID = ...
LIMIT 1
UNION ALL
(SELECT pi.prodID, tL.imgUrl 
FROM thumbLarge AS tL 
WHERE prodID = ...
LIMIT 1)
UNION ALL
(SELECT pi.prodID, ts.imgUrl 
FROM thumbSmall AS ts 
WHERE prodID = ...
LIMIT 2)

撇开你的问题不谈,缩略图不是大图像的小版本吗?如果是这样,您是否希望将它们存储在一个表中,或者存储在三个不同的列中,或者甚至不存储缩略图名称,而是从大图像名称派生出来。也许这会有所帮助:谢谢您的建议@GolezTrol。我想知道为什么我从来没有考虑过。无论如何,我已经实现了你的建议,这比为缩略图创建多个表要好得多。就像你说的;我觉得将缩略图存储在一个单独的表中有点奇怪,事实证明,我从不需要数据库中的额外开销!谢谢你指出这一点。一旦我尝试这些查询,我会发布反馈!谢谢