tra*_*ter 2 php mysql sql-like
好的,我已经使用了一段时间了,我有点卡住了。
也许我正在做错所有事情!
基本上我有一个搜索字段的查询。一般的想法是根据LIKE %%选择结果,同时仍然将精确匹配放在第一位。
因此,例如,如果您搜索47,则我希望显示ID,姓氏或company_name中带有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";
Run Code Online (Sandbox Code Playgroud)
`
尝试这个:
(选择完全匹配)将全部与(选择部分匹配省略完全匹配)结合在一起
范例:
(
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1677 次 |
| 最近记录: |