【问题标题】:SELECT DISTINCT picture, ID from TableSELECT DISTINCT 图片,ID from Table
【发布时间】:2013-12-16 19:39:55
【问题描述】:

我需要能够选择数据库中保存的 3 个不同的图片 URL,但还要在不影响 DISTINCT 参数的情况下提取行中的其他数据...

示例::

数据库 =

ID - PICTURE_URL
01 - domain.com/pic1.jpg
02 - domain.com/pic1.jpg
03 - domain.com/pic1.jpg
04 - domain.com/pic2.jpg
05 - domain.com/pic3.jpg

因此,在上面的示例中,SQL 应该只 PULL ID 1、2 或 3 作为结果,而 4 和 5 作为其他 2 个结果。

输出 =

01 Domain.com/pic1.jpg
04 Domain.com/pic2.jpg
05 Domain.com/pic3.jpg

02 Domain.com/pic1.jpg
04 Domain.com/pic2.jpg
05 Domain.com/pic3.jpg

03 Domain.com/pic1.jpg
04 Domain.com/pic2.jpg
05 Domain.com/pic3.jpg

因为picture_url都有相同的url指向存储在服务器上的一张图片,所以我不想选择相同的3张图片。

:)

对此的任何帮助将不胜感激:)

【问题讨论】:

  • 当您需要获取不同的 url-s 时,为什么您对 ID 感兴趣?

标签: mysql select distinct


【解决方案1】:

你可以使用聚合函数:

select min(ID), PICTURE_URL
from your_table
group by PICTURE_URL

【讨论】:

  • 这让我走上了正确的轨道,'group by' 似乎可以满足我的需要...... min(ID) 在做什么?你能解释一下吗,因为我不确定我是否应该使用它。
  • 查询的作用是:为每个 PICTURE_URL 取找到的最小 ID。这将为您提供输出: 01 Domain.com/pic1.jpg 04 Domain.com/pic2.jpg 05 Domain.com/pic3.jpg 您也可以采用 max(ID),在这种情况下为“Domain.com/pic1 .jpg" 将获得 "03" 的值,这是该 URL 的最大 ID。
  • 谢谢你的解释,我最终使用了这个查询code SELECT DISTINCT id,title,picture,general_url FROM adverts WHERE status != 'pending' GROUP BY picture ORDER BY RAND() LIMIT 3; code
  • 抱歉不知道如何让它正确显示代码,我也不能投票...
  • 为什么不直接使用有效的 SQL?从长远来看,这将使您的生活更轻松。
【解决方案2】:

查询:

SQLFIDDLEExample

SELECT t1.ID,
       t1.PICTURE_URL
FROM Table1 t1
left join Table1 t2
on t1.PICTURE_URL = t2.PICTURE_URL
AND t1.ID > t2.ID
WHERE t2.ID is null

结果:

| ID |         PICTURE_URL |
|----|---------------------|
|  1 | domain.com/pic1.jpg |
|  4 | domain.com/pic2.jpg |
|  5 | domain.com/pic3.jpg |

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 2017-09-27
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    相关资源
    最近更新 更多