[英]Wordpress MySQL query with WHERE clause after GROUP_CONCAT returns unexpected results
SELECT p.*,
GROUP_CONCAT(pm.meta_key ORDER BY pm.meta_key DESC SEPARATOR '||') as meta_keys,
GROUP_CONCAT(pm.meta_value ORDER BY pm.meta_key DESC SEPARATOR '||') as meta_values
FROM $wpdb->posts p
LEFT JOIN $wpdb->postmeta pm on pm.post_id = p.ID
WHERE p.post_type = 'item' and p.post_status = 'publish'
AND pm.meta_key = 'adtype'
AND pm.meta_value = '1'
GROUP BY p.ID
ORDER BY p.post_date_gmt DESC
LIMIT 0,10
我正在使用特殊的WordPress查詢來獲取發布和發布后的數據,當我想在postmeta上添加其他WHERE時遇到問題。
在這里,我想限制pm.meta_key adtype等於1的結果。該查詢有效,但是var_dump()表明它更改了串聯的meta_keys和meta_values組的值。
在我的結果中,我不再將meta_keys和meta_values作為連接結果取出,而是將它們分別設置為'adtype'和'1'的WHERE值。
該查詢無需附加WHERE子句即可工作,但我希望能夠過濾結果。
添加WHERE
子句是正常的:
AND pm.meta_key = 'adtype'
AND pm.meta_value = '1'
您將結果限制為僅具有這些值的行,因此,在meta_keys和meta_values中,您的值將不會與WHERE
子句中指定的值不同。
我自己在以下線程中找到了解決方案: 無法使復雜的mysql查詢正常工作
在SELECT語句中,我為adtype提供了一個新值:
max(如果pm.meta_key ='adtype'然后pm.meta_value結束的情況)作為adtype
在GROUP BY之后,我添加了:
廣告類型=“ 1”
這工作了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.