2016-05-02 34 views
0

我表books包含圖像,語言,信仰。我'讓信仰不同的價值觀與如何選擇與隨機列MYSQL不同?

SELECT DISTINCT faith, language from books; 

,其獲取的信仰系列(15結果),但我想獲取沿image太多,但隨機。所以結果可以顯示隨機圖像的信心。我該如何做,請建議。

+2

這將涉及兩個查詢,或一個特別醜陋的查詢。 – tadman

+1

您可以通過該查詢獲得不同的信仰和語言值。 – jarlh

+0

兩個'SELECTS'或查詢?請你提一下樣品。 – RanaHaroon

回答

1

查詢

select distinct faith, language from books; 

選擇從表中不同的信仰,語言的組合。那麼,你的表中包含了相同的信仰和語言兩個條目

 
Faith Language Image 
1  EN  img1 
1  EN  img2 
1  FR  img3 
1  FR  img4 

你的結果會包含每個組合只有一次:

 
Faith Language 
1  EN 
1  FR 

它不是從你的問題明確,但你的意思是用什麼隨機圖像。這裏是你如何得到一個信仰,語言組合匹配的圖像隨機選取的一個:

select faith, language, image 
from books 
group by faith, language; 

結果看起來是這樣的:

 
Faith Language Image 
1  EN  img2 
1  FR  img3 

的原因是,我們彙總行。在GROUP BY子句中,我們說我們希望每個信念和語言都有一個結果行,但是我們也選擇了Image,並且沒有指定我們希望每個組看到哪個結果行(我們可以使用MIN或MAX等集合函數),所以我們只獲得一個匹配由DBMS任意挑選的信仰 - 語言組合的圖像。

這已經是你想要的嗎?

+0

我很欣賞你的意見,但這不可行,請讓我多解釋一下。我有不同的'信仰'列的'書'表中有很多行。有很多書籍都是用自己的書本圖片來表達信仰的。現在我從書桌上獲取所有的信仰,我想爲信仰設置一個隨機的圖像,可以有100本書反對自己。每次執行查詢時,信仰將保持不變,但圖像應每次隨機更改 例如 - (信仰:宗教|留下語言。 – RanaHaroon

0

謝謝大家,我得到了解決,從

Select random row per distinct field value?

SELECT r.faith, 
(SELECT r1.image FROM books AS r1 WHERE r.faith=r1.faith ORDER BY rand() LIMIT 1) AS image FROM books AS r GROUP BY r.faith; 

它取不同字段1faith與對執行的每個信仰每次查詢隨機域2圖像。