【发布时间】:2010-06-30 19:00:38
【问题描述】:
我正在尝试生成一个用于智能搜索字段的查询,ala google 建议。
我无法直接形成查询,尽管我可以通过日志查看进行了哪些查询。
我已经发布了发送的查询,它有语法错误,但我不确定原因。
SELECT DISTINCT IF(guests.passport != '', Concat(guests.passport,
IF(
guests.lastname !=
''
OR guests.passport!= '',
Concat
(' (',
IF(guests.lastname !=
'',
guests.lastname,
'{blank}')
, ', ',
IF(
guests.firstname != ''
, guests.passport,
'{blank}')
, ')'), '')),
IF(guests.lastname != ''
OR guests.passport!= '', Concat(IF(guests.lastname != '',
guests.lastname,
'{blank}'), ', ',
IF(
guests.passport!= '',
guests.passport, '{blank}')),
''
)) AS display,
`guests`.`uuid` AS VALUE,
as secondary,
guests.id AS classname
FROM guests
WHERE ( guests.id = 0 )
AND ( ( guests.firstname LIKE 'b%'
OR guests.lastname LIKE 'b%'
OR guests.passport LIKE 'b%' )
OR (( guests.firstname LIKE 'b%'
OR guests.firstname LIKE '% b%'
OR guests.lastname LIKE 'b%'
OR guests.lastname LIKE '% b%'
OR guests.passport LIKE 'b%'
OR guests.passport LIKE '% b%' )) )
ORDER BY IF(guests.passport != '', Concat(guests.passport,
IF(guests.lastname != ''
OR
guests.passport!= '',
Concat
(' (',
IF(guests.lastname != '',
guests.lastname, '{blank}')
, ', ',
IF(
guests.firstname != ''
, guests.passport,
'{blank}')
, ')'), '')),
IF(guests.lastname != ''
OR guests.passport!= '', Concat(IF(guests.lastname != '',
guests.lastname,
'{blank}'
), ', ',
IF(
guests.passport!= '', guests.passport,
'{blank}'
)),
''
))
LIMIT 0, 8
该查询是否有任何明显错误?
【问题讨论】:
-
帮我们大家一个忙,在里面放一些空格,伙计。
-
Jacob:您需要考虑使用全文搜索来进行文本搜索 - 更快,更简洁...
-
我无法控制生成的查询,因为我正在使用框架并且它是自动形成的。
标签: sql mysql mysql-error-1064