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的工作原理是定义一个“查询视图”——将一个或多个表、子查询或数据库视图连接在一起,然后对其进行筛选、分组和分组筛选。因此,您必须选择
。。。字段列表<代码>来自
。。。使用联接和子查询查看定义<代码>其中。。。行筛选器<代码>分组依据。。。分组参数<代码>具有。。。组筛选器<代码>订购依据订购参数。当然,其中一些是可选的。