MYSQL查询从一个表中选择,并将结果与另一个表连接

MYSQL查询从一个表中选择,并将结果与另一个表连接,mysql,sql,Mysql,Sql,我有两个表消息和用户: |user_id|name| 消息: |id|user_id|message|1st number|2nd number| 用户: |user_id|name| 我试图显示一条消息,并通过用户id在消息旁边获取用户名。是否可以在一个查询中完成 此时,我的演示查询看起来是这样的,但它不起作用 SELECT * FROM messages WHERE 1st number BETWEEN $x AND $z AND 2nd BETWEEN $x AND $z

我有两个表
消息
用户

|user_id|name|
消息

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

|user_id|name|
我试图显示一条消息,并通过用户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行“在何处用户上左连接用户。用户\u id=messages.user\u id按时间顺序描述”的正确语法。您的SQL存在一些问题:

  • 如果列名包含空格,则需要将其引用
  • 您需要在mysql中编写完整的列名
  • 在哪里之前加入
大概是

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
应该可以用了,请试试这个

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

你在问题中已经说过了;你可以加入他们。您收到了什么错误消息?此外,以下工作是否有效?“从留言中选择*在用户上加入用户。用户\u id=留言。用户\u id”如果没有,您在后一个查询中得到的错误消息是什么?“第一个号码”是您的真实字段名吗?谢谢,这个问题解决了。只有一个新手问题。因此,当试图从多个表中获取结果时,首先需要将所有表连接起来,然后进行筛选?SQL select的工作原理是定义一个“查询视图”——将一个或多个表、子查询或数据库视图连接在一起,然后对其进行筛选、分组和分组筛选。因此,您必须选择
。。。字段列表<代码>来自
。。。使用联接和子查询查看定义<代码>其中。。。行筛选器<代码>分组依据。。。分组参数<代码>具有。。。组筛选器<代码>订购依据订购参数。当然,其中一些是可选的。