0

我有两张桌子MESSAGESUSERS

MESSAGES

|id|user_id|message|1st number|2nd number|

USERS

|user_id|name|

我正在尝试显示一条消息,并通过 user_id 获取消息旁边的用户名。是否可以仅在一个查询中完成?

此时我的演示查询看起来像这样,但它不起作用。

SELECT *
 FROM   messages
 WHERE  1st number BETWEEN $x AND $z
 AND 2nd BETWEEN $x AND $z
 LEFT JOIN users
 ON users.user_id= messages.user_id
 ORDER BY time DESC

我得到的错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的“LEFT JOIN users ON WHERE users.user_id=messages.user_id ORDER BY time DESC”附近使用正确的语法

4

2 回答 2

0

您的 SQL 存在一些问题:

  • 如果列名包含空格,则需要引用它们
  • 你需要在mysql中写完整的列名
  • JOIN 在 WHERE 之前

所以像

SELECT *
FROM messages
 LEFT JOIN users ON users.user_id=messages.user_id
WHERE `1st number` BETWEEN $x AND $z
 AND `2nd number` BETWEEN $x AND $z
ORDER BY time DESC

应该管用

于 2013-08-20T11:12:51.920 回答
0

请试试这个。

SELECT
    *
FROM
    messages
    LEFT JOIN users ON users.user_id = messages.user_id
WHERE
        `1st number` BETWEEN $x AND $z
    AND
        `2nd number` BETWEEN $x AND $z
ORDER BY time DESC
于 2013-08-20T11:13:14.990 回答