我確定答案已經在這裏某處,但我找不到我特別需要的東西。在mysql中比較兩列相同的連接行
這很簡單。我有一個通過WordPress的一對多表(wp_posts和wp_postmeta)。 postmeta表具有引用帖子表的任意數量的行。
我需要比較不同postmeta行的兩個值。
實施例:
SELECT *
FROM wp_posts
JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.ID
WHERE
(
wp_postmeta.meta_key = 'company'
AND
wp_postmeta.meta_value LIKE '%Company 01%'
) AND (
wp_postmeta.meta_key = 'description'
AND
wp_postmeta.meta_value LIKE '%Potato%'
)
在上面的例子中,我需要檢查的元鍵「公司」和「說明」對同一行內的值。但同時,我需要檢查另一個元鍵/值對。
什麼是比較這些元鍵的正確方法?我需要爲每個項目比較大約10個獨立的元鍵(將來會更多),所以我期望使用太多的子查詢會讓它變慢。
(FYI這是爲WordPress的境外使用,無需通知我關於get_post_meta()函數)
相關:[爲多個元值定製WordPress SQL查詢]( http://kuttler.eu/code/custom-wordpress-sql-query-for-multiple-meta-values/) - 爲每個元鍵使用單獨的連接。如果我打算使用10個以上的密鑰,似乎效率極低。我需要在這裏最大化性能,因爲這是一個ajax腳本。 –
它可能看起來效率低下,但它表現相當好 – Strawberry
哦,是嗎?我不這麼認爲,也許如果我比較主鍵,但這都是字符串。我想我會用這個解決方案滾動,直到找到更好的解決方案(如果有更好的解決方案)。當我獲得更多的數據時,我肯定會做一些速度測試。 –