gpt4 book ai didi

php - Drupal db_select PDO 语句 : ORDER BY CASE

转载 作者:行者123 更新时间:2023-11-29 04:47:13 27 4
gpt4 key购买 nike

你好,我写了一个 MySQL 语句,它有一个条件 order by 子句,你可以在下面的例子中看到。

MySQL 示例:

SELECT 
title,
description
FROM books
WHERE
title LIKE "%keyword%" OR description LIKE "%keyword%"
ORDER BY
CASE
WHEN title LIKE "%keyword%"
THEN 1
ELSE 2
END

我现在正尝试使用其 PDO 样式的 db_select() 函数在 Drupal 中重新创建此语句。但是我在写 ORDER BY 子句时卡住了。

Drupal 示例:

 $node_select = db_select('node', 'n');
$node_select->fields('n', array('title', 'description'));
$node_select->condition(
db_or()->condition('n.title', '%'.$keyword.'%', 'LIKE')
->condition('n.description', '%'.$keyword.'%', 'LIKE')
);
$node_select->order();

任何人都可以指出正确的方向,告诉我如何编写 ORDER BY 部分吗?

最佳答案

我认为您可以通过在 select 语句中添加一个表达式,然后将该字段添加为按字段排序来实现。这只有在您可以在选择列表中添加额外字段的情况下才有效。这会像这样工作:

$query->addExpression('CASE WHEN title LIKE "%keyword%" THEN 1 ELSE 2 END', 'order_col');
$query->orderBy('order_col', 'ASC');

我认为您不能在 orderBy 子句中专门使用表达式,但这应该适合您。

关于php - Drupal db_select PDO 语句 : ORDER BY CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17231524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com