gpt4 book ai didi

Mysql喜欢多列搜索

转载 作者:行者123 更新时间:2023-11-29 00:31:16 25 4
gpt4 key购买 nike

我有一个带有搜索选项的 drupal 站点。如果用户输入搜索关键字,我需要将其与多个列进行比较并显示记录。

我试过下面的查询

$search = 'test';

$sql_query = db_select('logoinfo', 'l')->fields('l');
$or = db_or();
$or->condition('search_field', '%'.db_like($search).'%','LIKE');
$or->condition('companyname', '%'.db_like($search).'%','LIKE');
$sql_query->condition($or);
$selectlogos = $sql_query->execute();

以自增Id递增的顺序显示搜索关键字匹配的所有记录。

但我想首先显示同时具有 search_fieldcompanyname 与关键字匹配的记录,然后显示与任一 companyname 匹配的其他记录search_field。请建议实现这一目标。

最佳答案

orderBy需要字段名且不能按表达式排序,您需要使用 addExpression获取别名,然后按该别名订购。如果值不在两个字段中,我示例中的表达式将返回 0,如果在两个字段中都存在,则返回 1。据我所知,这应该是标准的 SQL,但它可能因不同的数据库后端而异;因此表达式可能需要根据您使用的数据库进行调整。

<?php
$search = 'test';
$sql_query = db_select('logoinfo', 'l')->fields('l');
$or = db_or();
$or->condition('search_field', '%'.db_like($search).'%','LIKE');
$or->condition('companyname', '%'.db_like($search).'%','LIKE');
$sql_query->condition($or);

$safe_search = db_like($search);
$ex_alias = $sql_query->addExpression("l.search_field LIKE '%$safe_search%' AND l.companyname LIKE '%$safe_search%'");
$sql_query->orderBy($ex_alias, 'DESC');

$selectlogos = $sql_query->execute();
?>

关于Mysql喜欢多列搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16373897/

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