【问题标题】:SQL query with CASE WHEN used in WP_query wordpress function在 WP_query wordpress 函数中使用 CASE WHEN 的 SQL 查询
【发布时间】:2022-11-26 23:36:04
【问题描述】:

我有这个 SQL 查询:SELECT * FROM `wpgo_postmeta` WHERE `meta_key` = 'price' ORDER BY CASE WHEN meta_value REGEXP '^[0-9]+$' THEN 1 ELSE 0 END, meta*value+0 DESC; * 这对我有用,但我需要转换它以便 wordpress apply_filters 函数使用它。

我尝试了很多东西,包括这个WordPress Query: ORDER BY CASE WHEN
但随后它返回一个空列表。我知道该查询有效,因为我已经对其进行了手动测试。

我也试过了,看起来应该可以,但我也得到了一个空列表。

$query_args['meta_key'] = 'fave_property_price';
$query_args['orderby'] = "CASE WHEN meta_value REGEXP '^[0-9]+$' THEN 1 ELSE 0 END, metavalue+0 DESC;";

【问题讨论】:

    标签: sql wordpress case


    【解决方案1】:

    看起来您希望数字 meta_value 结果出现在非数字结果之后。

    您可以像这样简化 ORDER BY。

    ORDER BY (meta_value REGEXP '^[0-9]+$'), meta_value DESC
    

    它之所以有效,是因为布尔比较运算的输出显示 1 表示真,0 表示假。括号不是绝对必要的,但它们使代码更容易阅读。

    使用 John Blackbourn 的查询监视器插件查看您的查询在现实生活中的样子,在所有 WP_Query 代码完成组装之后。查询过滤器的正确使用有时会令人困惑。

    如果代码是诗歌,那么 WP_Query 代码就是神秘的咒语调用吟唱。叹。

    【讨论】:

      猜你喜欢
      • 2017-05-30
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多