Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多个LIKE子句精确匹配的mysql查询顺序_Php_Mysql_Sql Like - Fatal编程技术网

Php 多个LIKE子句精确匹配的mysql查询顺序

Php 多个LIKE子句精确匹配的mysql查询顺序,php,mysql,sql-like,Php,Mysql,Sql Like,好的,我已经用这个工作了一段时间,我有点卡住了 也许我完全搞错了 基本上我有一个搜索字段的查询。一般的想法是基于LIKE%%选择结果,同时仍然将精确匹配放在第一位 因此,例如,如果您搜索47,我希望id、姓氏或公司名称中包含47的所有内容都显示出来,但是id号为47的结果应位于顶部,如果我键入姓氏,则结果应相同 请参阅下面我的代码,这可能有助于澄清我的问题 SELECT id, IF(company_name IS NOT NULL AND company_name <> '',

好的,我已经用这个工作了一段时间,我有点卡住了

也许我完全搞错了

基本上我有一个搜索字段的查询。一般的想法是基于LIKE%%选择结果,同时仍然将精确匹配放在第一位

因此,例如,如果您搜索47,我希望id、姓氏或公司名称中包含47的所有内容都显示出来,但是id号为47的结果应位于顶部,如果我键入姓氏,则结果应相同

请参阅下面我的代码,这可能有助于澄清我的问题

SELECT id, 
IF(company_name IS NOT NULL AND company_name <> '', company_name, surname) AS name, 
first_name, country, phone1, isowner, isholidayrenter, isproholidayrenter, 
islongtermrenter, isprolongtermrenter, isprobuyer, isbuyer 
FROM clients 
WHERE id LIKE '$search' OR surname LIKE '$search' OR company_name LIKE '$search'
union all
SELECT id, 
IF(company_name IS NOT NULL AND company_name <> '', company_name, surname) AS name,      
first_name, country, phone1, isowner, isholidayrenter, isproholidayrenter,     
islongtermrenter, isprolongtermrenter, isprobuyer, isbuyer 
FROM clients 
WHERE id LIKE '%$search%' AND id NOT LIKE '$search' OR surname LIKE '%$search%' 
and SURNAME NOT LIKE '$search' OR company_name LIKE '%$search%' 
and company_name NOT LIKE '$search' 
LIMIT $start, $limit";
`试试这个:

选择精确匹配联合所有,选择部分匹配忽略精确匹配

例如:


绝对完美,非常感谢。我没想到会有人把它放在盘子里。这是我要做的第一件事,但我没有足够的代表点数来投票
(
  SELECT
      id, 
      IF( company_name IS NOT NULL AND company_name <> '', company_name, surname ) AS name,
      first_name, country, phone1, isowner, isholidayrenter, isproholidayrenter, 
      islongtermrenter, isprolongtermrenter, isprobuyer, isbuyer 
  FROM
      clients 
  WHERE
      id LIKE '$search' OR 
      surname LIKE '$search' OR 
      company_name LIKE '$search'
)
union all
(
  SELECT 
      id,
      IF( company_name IS NOT NULL AND company_name <> '', company_name, surname ) AS name, 
      first_name, country, phone1, isowner, isholidayrenter, isproholidayrenter,
      islongtermrenter, isprolongtermrenter, isprobuyer, isbuyer 
  FROM
      clients 
  WHERE
      ( id LIKE '%$search%' AND id NOT LIKE '$search' ) OR 
      ( surname LIKE '%$search%' AND SURNAME NOT LIKE '$search' ) OR
      ( company_name LIKE '%$search%' AND company_name NOT LIKE '$search' )
)
LIMIT $start, $limit;