2011-11-12 40 views
1

我試圖修改get_previous_post_sort/get_next_post_sort訂單的自定義帖子類型張貼導航根據這些帖子存儲在數據庫中的字段的順序(這是通過另一個自定義字段設置)在另一個地方)。MySQL ORDER BY字段包含一個數字字符串

默認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) 

下面是我使用的是過濾一切(這是吐出這個查詢)我的實際代碼:http://pastebin.com/ceiib5Hf

這應該會使它變得清晰。感謝迄今的回覆!

+0

是你的問題「我如何解析一個字符串中有很多數字,以便我可以按照記錄ID順序從關聯表中取回所有記錄」? –

回答

2

您可以使用FIELD(...)

ORDER BY FIELD(p.ID,1746,1741,...,1840,1843,1846) 
+0

嗨馬克,感謝這一點,但它不工作......不知道爲什麼,我認爲可能有一個get_next_post_sort/get_previous_post_sort的整體過濾問題 - 正在吐出的查詢看起來不錯,但它就像它不是應用...我會在上面發佈更多的代碼。 – Jonah

1

在第二表把這些 「神奇」 的數字,它有兩行:

  • 幻數
  • 排序順序

現在將您的表加入第二張表中,並按排序順序排序。這將使您的查詢和號碼更容易維護。

相關問題