MySQL 条件 Where 子句

标签 mysql sql

基本上,当 meta_key 字段等于“位置”时,我想添加一个额外的 where 子句以根据该位置进行比较。

我已经尝试过使用 Case 和 IF 语句进行此操作,但似乎无法使其正常工作,您知道我哪里出错了吗?

$query = "
SELECT wp_posts.ID, wp_posts.post_title, wp_posts.post_type,
wp_postmeta.meta_key, wp_postmeta.meta_value, wp_postmeta.post_id,
wp_term_relationships.object_id, wp_term_relationships.term_taxonomy_id, 
wp_term_taxonomy.term_id,
wp_terms.term_id, wp_terms.name

FROM wp_posts

/* Join Post Meta Table */
JOIN wp_postmeta
ON wp_posts.ID = wp_postmeta.post_id

/* Join Term Relationships Table to get the taxonomy id */
JOIN wp_term_relationships
ON wp_posts.ID = wp_term_relationships.object_id

/* Join Term Taxonomy Table to get the Term ID */
JOIN wp_term_taxonomy
ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id

/* Finally Join to the Terms table to get the Category Name *sigh* */
JOIN wp_terms
ON wp_term_taxonomy.term_id = wp_terms.term_id

WHERE post_type = 'listing' AND
wp_postmeta.meta_key IN ('locations', 'email', 'phone-number')";

if(isset($location)) {

    $query .= "
    IF wp_postmeta.meta_key='location'
        THEN AND wp_postmeta.meta_value LIKE '".mysql_real_escape_string($location)."'
    END IF";

}

谢谢,如果我解释得不够清楚,请告诉我!

最佳答案

if(isset($location)) {
        $query .= " AND 
        CASE 
         WHEN wp_postmeta.meta_key='location' THEN wp_postmeta.meta_key 
         LIKE '".mysql_real_escape_string ($location)."'   
         ELSE 1=1
        END ";
      }

关于MySQL 条件 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5614743/

相关文章:

php - 如何在 mysql 中连接 4 个表以获取同一个 html 表上的不同列数据?

mysql - 无法删除带有 GROUP BY 和 HAVING 子句的语句

java - 由于日期而导致 Android 数据库 SQLite 出错

java - 当我转到下一页搜索关键字不适用时的jsp分页问题

MySQL无需停机即可更新整个数据库

MySQL - 如果字符串长度超过一定长度,如何从字符串中删除字符?

mysql - 获取子查询的最大值后显示该行的其他值

php - 检查所有列的值

php - SQLSTATE[42S22] : Column not found: 1054 Unknown column '' in 'where clause' (SQL: select * from `customer` where `` = 1 limit 1)

sql - 动态检查变量是否在 PL SQL 中具有值