[英]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 |
您可以考慮使用auto_increment列和指定特定序列的列在某些(臨時)表中插入這些序列。 那你就可以做
SELECT b.textcolour
FROM sequences a JOIN colours b
ON a.number = b.number
WHERE a.seq_no = ?
ORDER BY a.id
感謝@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.