正确的连接语法

时间:2017-07-27 07:27:35

标签: mysql phpmyadmin

我的phpmyadmin语法有问题。这是我的疑问:

SELECT
    CONCAT_WS(',', visitor_name, visitor_email, visitor_phone) AS visitor_info,
    session_geoip_country,  
    session_geoip_city,
    visitor_chats_count,
    agents_names, 
    chat_id,
    SUBSTRING( visitor_description, 1, 100 ) AS Manager_note
FROM
    client_jivo_chat_finished
INNER JOIN
    client_jivo_chat_finished_messages.timestamp, client_jivo_chat_finished_messages.message 
ON
    client_jivo_chat_finished_messages.chat_id = client_jivo_chat_finished.chat_id

,错误是:

  

"#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在“client_jivo_chat_finished_messages.chat_id = client_jivo_chat_finished.chat_i”之间使用正确的语法。在第8行"

3 个答案:

答案 0 :(得分:1)

您需要首先理解您尝试做的事情。在INNER JOIN语法之后有两个表引用,这是不允许的。请查看JOIN参考手册,了解如何使用它。

简而言之,您已尝试过

SELECT
    ...
FROM
    table1
INNER JOIN
    tableA, tableB ON <cond>

如果您想通过INNERLEFT或其他联接加入表格(请再次参阅第一段中链接的手册参考),您必须选择一个表引用,并根据该表引用添加条件。不是两个或更多。

简而言之,

SELECT
    ...
FROM
    table1
INNER JOIN
    tableA ON tableA.columnX = table1.columnFoo
INNER JOIN
    tableB ON tableB.columnY = table1.columnBar
如果要与另外两个表连接,

是正确的语法。 ON子句之后的条件部分可能会有所不同。

然而,有些人在加入临时表之前先将它组合起来创建一个临时表。这实际上是一种例外做法,只有在需求要求时才有用(或降低复杂性)。

此外,您还尝试使用

INNER JOIN client_jivo_chat_finished_messages.timestamp

您正在尝试使用列而不是引用表进行连接(除非您以这种方式命名表,这是不好的做法)。这可以通过名称中的.看到,就像

 A.Foo = "Check for column named as 'Foo' in table A"

尝试逐步构建查询。首先使用SELECT *选择整个表格,然后尝试加入它。然后继续。如果您获得了包含所需字段的正确表输出,请重新定义SELECT语句以选择要使用的列。

答案 1 :(得分:1)

您加入表格列时语法不正确。这是修改后的版本。希望这有效。

SELECT
    CONCAT_WS(',', visitor_name, visitor_email, visitor_phone) AS visitor_info,
    session_geoip_country,  
    session_geoip_city,
    visitor_chats_count,
    agents_names, 
    chat_id,
    SUBSTRING( visitor_description, 1, 100 ) AS Manager_note
FROM
    client_jivo_chat_finished
INNER JOIN
    client_jivo_chat_finished_messages 
ON
    client_jivo_chat_finished_messages.chat_id = client_jivo_chat_finished.chat_id

你应该在一个列上加入两个表。只需删除此部分。

INNER JOIN client_jivo_chat_finished_messages.timestamp, client_jivo_chat_finished_messages.message

答案 2 :(得分:0)

选择     CONCAT_WS(',',visitor_name,visitor_email,visitor_phone)为visitor_info-detail,     session_geoip_country,
    session_geoip_city,     visitor_chats_count,     agents_names,     chat_id,     SUBSTRING(visitor_description,1,100)AS manager_note 从  client_jivo_chat_finished 内部联接  client_jivo_chat_finished_messages ON client_jivo_chat_finished_messages.chat_id = client_jivo_chat_finished.chat_id