数字の文字列を含むMySQLのORDER BY BY FIELD

私はデータベース内のフィールドに格納されたこれらの投稿の順序に基づいてカスタム投稿の投稿投稿ナビゲーションの get_previous_post_sort/get_next_post_sort の順序を変更しようとしています(別の場所の別のカスタムフィールド)。

デフォルトでは、 get_previous_post_sort/get_next_post_sort の注文は、これらの投稿が入力された日付になりますが、データベースのカスタムフィールドで注文する必要があります。

データベース内のフィールドには、投稿の投稿IDが順番に格納されています。そのようにするには、次のようにします。 1746,1741,1751,1755,1758,1761,1749,1764,1776,1767,1781,1770,1773,1784,1787,1790,1793,1798,1801,1804,1807,1810,1813,1816,1819、 1822,1825,1828,1831,1834,1837,1840,1843,1846

私はカスタムフィールドからこの文字列を引き出すことができましたが、実際に前/次のリンクに影響を与えています。デバッグ出力のクエリは実線で表示されます。

SELECT p.*  
FROM wp_posts AS p  
INNER JOIN wp_postmeta AS m ON p.ID = m.post_id  
WHERE p.post_date < '2011-11-09 17:08:32'  
AND p.post_type = 'story-images'  
AND p.post_status = 'publish'  
AND m.meta_key = 'editorial'  
AND m.meta_value = 771  
ORDER BY FIELD(p.ID,1627,1624,1630,1633,1636,1639,1642,1645,1648,1653,1656,1659,1662,1665,1668,1671,1694,1730,1697,1700,1703,1706,1709,1712,1715,1718,1721,1724,1727)

Here's my actual code that I'm using to filter everything (that's spitting out this query): http://pastebin.com/ceiib5Hf

これはこれをより明確にするはずです。これまでの返信をありがとう!

1
あなたの質問は、「レコードID順に関連するテーブルからすべてのレコードを戻すことができるように、その中にたくさんの番号を持つ単一の文字列を解析するにはどうすればよいですか?
追加された 著者 Michael Durrant,

2 答え

FIELD(...)

ORDER BY FIELD(p.ID,1746,1741,...,1840,1843,1846)
2
追加された
こんにちはマーク、これはありがたいが、それは動作しません...なぜ、私はget_next_post_sort/get_previous_post_sortの全体的なフィルタリングに問題があるかもしれないと思います - 吐き出されているクエリがうまく見えますが、 ...私は上記のコードを投稿します。
追加された 著者 Jonah,

これらの「マジック」ナンバーを2行目の2番目のテーブルに入れます:

  • マジックナンバー
  • 並べ替え順序

今すぐこの2番目のテーブルに対してテーブルを結合し、並べ替え順序で並べ替えます。これにより、クエリと数値のメンテナンスが容易になります。

1
追加された