2016-08-04 48 views
-2

我想在mysql中的同一个select语句中一次执行两件事。我的用户可以上传图片。图像文件名称保存在表格中。用户只能上传10张图片。如果用户加载的时间少于10,然后又回来再上传一些,我需要知道已经上传了多少,以及最后一个文件的名称是什么(我将这些文件重新命名为上传文件,因为这个原因) 。我一直在摆弄这个:获取计数,如果小于X获取最后一行的名称输入

SELECT COUNT(vendimagepath) AS id , vendimagepath 
    FROM vendimages WHERE vendregid = '$vendredig' 
    ORDER BY vendimagepath DESC 

它给了我已经上传这是成功的一半文件的数量,但然后给出了似乎是由用户上传一个随机文件名。我可能会吠叫错误的树,可能需要将它分解为两个查询,但是试图不这样做是如此快速的继承。我认为我接近得到它,但只是不够接近。

+0

你有你正在使用的表的模式(DDL)?这将有所帮助。 – tale852150

+0

如果您的count列包含数字/整数,但使用varchar作为类型,那么这将解释随机文件名。这个问题还不清楚,并且已经提出,为此提供数据库模式。然而,你说的标题“如果小于X”;你究竟是什么意思?通常你会遍历行并检查'if($ row ['x']> = 10)',所以你真的需要澄清你的问题。哦,如果你知道如何用@符号来ping某人;做。我一个人不会在这里待上好几个小时。 –

回答

0

如果此表上有日期列(例如created),则可以按该列指定DESC,然后在第一条记录中使用LIMIT子句。

SELECT b.nbr_of_images, 
     a.vendimagepath, 
     a.created 
FROM vendimages a, 
     (SELECT COUNT(*) as nbr_of_images, 
       vendregid 
     FROM vendimages 
     WHERE vendregid = '$vendredig' 
     GROUP BY vendregid) b 
WHERE a.vendregid = b.vendregid 
AND a.vendregid = '$vendredig' 
ORDER BY a.created DESC LIMIT 1; 

结果:

NBR_OF_IMAGES VENDIMAGEPATH CREATED 
3    /usr/png2  8/4/2016 18:08:50