SQL - 根据同一个表中的另一个值排除行

时间:2011-10-20 01:34:06

标签: mysql

有问题的申请是一个分类网站。我正在使用查询来检索名为“cp_price”的字段中的值,以生成系统中所有列表的总值。

我的目标是排除“cp_ad_sold”字段中值为“是”的所有商家信息。

这是我用来检索值的查询:

$raw_prices = $wpdb->get_col( $wpdb->prepare( "     
    SELECT pm.meta_value FROM {$wpdb->postmeta} AS pm 
    LEFT JOIN {$wpdb->posts} AS p ON p.ID = pm.post_id 
    WHERE p.post_type = 'ad_listing'
    AND p.ID = pm.post_id
    AND pm.meta_key = 'cp_price'
    " ) );

所以,我猜测我需要做一个subselect?

我知道我需要的密钥和相应值存储在postmeta表中,右边是“cp_price”字段。我也知道“cp_price”和“cp_ad_sold”共享相同的“post_id”。

问题:如何根据“cp_ad_sold”键中的“是”值排除ad_listings及其各自的cp_price值?

注意:我正在使用WordPress,并考虑在WordPress Stackexchange上发布问题。我认为这是一个基于SQL的问题,但认为这是最合适的场所。

1 个答案:

答案 0 :(得分:0)

您可能还想为WHERE子句添加条件 -

$raw_prices = $wpdb->get_col( $wpdb->prepare( "     
    SELECT pm.meta_value FROM {$wpdb->postmeta} AS pm 
    LEFT JOIN {$wpdb->posts} AS p ON p.ID = pm.post_id 
    WHERE p.post_type = 'ad_listing'
    AND p.ID = pm.post_id -- Do you really need it? Check LEFT JOIN ... ON clause
    AND pm.meta_key = 'cp_price'
    AND cp_ad_sold <> 'yes' -- Something like this
    " ) );