php
  • mysql
  • 2017-03-17 45 views 1 likes 
    1

    我有一個包含各種類別和每個類別的多個條目的表。從表中選擇隨機但不同的行 - MySQL

    Word | Category 
    ------------------ 
    Apple | Food 
    Orange | Food 
    Grapes | Food 
    Mango | Food 
    

    我想找回3個隨機行的類別「食物」,爲此,我運行下面的查詢,

    $query = "SELECT * FROM table WHERE category='food' ORDER BY RAND() LIMIT 3" 
    
    $fetch_row = mysqli_query($db_connect, $query); 
         while ($row = mysqli_fetch_array($fetch_row)) { 
          array_push($words, $row['word']); 
         } 
    

    然而,當我打印的數組$字的內容,他們例如有時會重複(並非全部);

    蘋果,橘子,蘋果

    即它並不總是唯一的。我想爲特定類別選擇隨機但唯一的單詞。我究竟做錯了什麼?我嘗試瞭解其他相關的答案,但我一直在搞點東西。我也嘗試了下面的查詢;

    SELECT * FROM table WHERE category='food' GROUP BY category ORDER BY RAND() LIMIT 3 
    

    但是,這仍然偶爾會給出重複。

    回答

    2

    由於word列有相同的價值觀,做GROUP BY word象下面這樣: -

    SELECT * FROM table WHERE category='food' GROUP BY word LIMIT 3 
    
    +0

    好了,我不知道該說些什麼,只是想知道我怎麼錯過了這一點。感謝您指出x) – Anas

    +0

    @Anas我們都從錯誤中學習。別擔心。很高興幫助你:) :) –

    相關問題