自动形成的 SQL 查询中的语法错误

发布于 2024-09-08 09:08:16 字数 4018 浏览 7 评论 0原文

我正在尝试生成一个与智能搜索字段一起使用的查询,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  

该查询中有任何明显的错误吗?

I am trying to generate a query for use with a smart search field, ala google suggest.

I can not form the query directly, although I can see what query was made via the logs.

I have posted the query that gets sent, which has a syntax error but I am unsure why.

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  

Is there any glaring error in that query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南冥有猫 2024-09-15 09:08:16

看这部分:

WHERE () AND

() 不是有效的 WHERE 子句。

Look at this part:

WHERE () AND

() is not a valid WHERE clause.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文