2

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>
";
}   

ただし、これにより、レコード「three」が複数回表示されることはありません。また、同じ配列を 2 回 (IN 用に 1 回、ORDER BY 用に 1 回) 書き込む必要はありません。これらのクエリを何千も作成する必要があるからです。

質問:最小量のコードでmysql レコードを特定の順序複数回表示するにはどうすればよいですか?

ご提案ありがとうございます。

4

2 に答える 2

0

答えてくれた@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))
于 2013-05-18T16:26:45.010 に答える