簡體   English   中英

GROUP_CONCAT之后具有WHERE子句的Wordpress MySQL查詢返回意外結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM