簡體   English   中英

如何以特定順序多次顯示mysql記錄

[英]How to show mysql records more than once and in a specific order

1)這是我為簡化說明問題而嘗試做的簡化的示例。 2)我將進行數千個此類查詢。

我有一個像這樣的mysql表:

NUMBER   TEXTCOLOUR
one      green
two      red
three    orange
four     pink

我想按以下順序顯示以下內容(每個單詞的文字顏色都不同):

三二一三

我努力了:

$query = "SELECT * FROM `table` WHERE `number` IN ('three', 'two', 'one','three') 
ORDER BY FIND_IN_SET(number, 'three,two,one,three')";

$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "
<div class='" .$textcolour. "'>$number</div>
";
}   

但這不會多次顯示記錄“三”。 同樣,我也不想寫兩次相同的數組(一次用於IN,一次又一次用於ORDER BY),因為我必須編寫成千上萬個這樣的查詢。

那么問題來了:如何以最少的代碼以特定的順序 多次顯示mysql記錄?

感謝您的任何建議!

嘗試

SELECT b.textcolour
  FROM 
(SELECT 'three' number UNION ALL 
 SELECT 'two' UNION ALL 
 SELECT 'one' UNION ALL 
 SELECT 'three') a LEFT JOIN table1 b ON a.number = b.number

輸出:

| TEXTCOLOUR |
--------------
|     orange |
|        red |
|      green |
|     orange |

SQLFiddle

您可以考慮使用auto_increment列和指定特定序列的列在某些(臨時)表中插入這些序列。 那你就可以做

SELECT b.textcolour
  FROM sequences a JOIN colours b
    ON a.number = b.number
 WHERE a.seq_no = ?
 ORDER BY a.id

SQLFIddle

感謝@peterm的答案(添加了額外的php供其他人使用)

$result = mysql_query("SELECT b.textcolour FROM (
SELECT 'three' number UNION ALL 
SELECT 'two' UNION ALL 
SELECT 'one' UNION ALL 
SELECT 'three'
) a LEFT JOIN table1 b ON a.number = b.number"); 

while ($row = mysql_fetch_object($result))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM