2013-12-16 28 views
1

我需要能夠選擇保存在數據庫中3個不同的圖片URL的同時也拉動該行中的其他數據,而不會影響它的DISTINCT參數...SELECT DISTINCT圖片,ID從表

實例::

數據庫=

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分的結果。

OUTPUT =

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

OR

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

OR

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

因爲picture_url都有相同的URL,以存儲在服務器上的圖片,所以我不希望選擇相同的3張照片。

:)

任何幫助將是非常讚賞:)

+0

爲什麼你對ID感興趣,當你需要獲得不同的url-s? –

回答

0

查詢:

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 | 
1

你可以使用聚合函數:

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

這讓我走上了正確的軌道,'group by'似乎爲我所需要的工作...什麼是min(ID)在做什麼?你能否解釋一下,因爲我不確定我是否應該使用它。 – user3052268

+0

查詢所做的是:對於每個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。 – slaakso

+0

謝謝你的解釋,我結束了使用此查詢'code' SELECT DISTINCT ID,標題,圖片,general_url 從廣告 WHERE狀態= '待定' GROUP BY圖片 ORDER BY RAND() LIMIT 3!; 'code' – user3052268