这个问题在这里已经有了答案:
mysql内部连接查询语法错误(1个答案)
两年前关门了。
我的数据库里有两张table。一个用于用户登录信息,一个用于一般信息。
我正在尝试编写一个查询,从fk“users\u id”与登录用户id相同的行中选择“firstname”列。
在php中执行任何操作之前,我在数据库中运行查询,因此登录的用户id(通常是一个变量)被替换为testuser的id。
我的问题是:
SELECT b6vjp_user_info.firstname
FROM b6vjp_user_info
WHERE b6vjp_user_info.users_id LIKE 243
INNER JOIN b6vjp_users ON b6vjp_user_info.users_id=b6vjp_users.id;
这是我的(出于安全原因被删)登录表,名为“b6vjp\u users”:
这是我的另一个名为“b6vjp\u user\u info”的表:
错误是:
# 1064 - Mistake in SQL-Syntax. 'INNER JOIN b6vjp_users ON b6vjp_user_info.users_id=b6vjp_users.id LIMIT 0, 25' on row 4
现在我翻译一下,因为我的工作环境是德语。但我相信你知道什么是语法错误。
不管怎样,我一遍又一遍地检查我的查询的连接部分,并查看了w3schools上的连接教程。但没有明显的错误。
有人看到我没看到的吗?
3条答案
按热度按时间mkshixfv1#
你必须把
where
之后on
条款baubqpgj2#
我强烈建议使用表别名。您还需要修改sql子句的顺序。所以:
或者,更简单地说,没有
JOIN
:笔记:
要删除的操作数
LIKE
应该是字符串。所以,把它做成一根绳子!隐式类型转换会导致各种问题。如果你没有使用通配符,我想
=
信息量更大。如果users_id
真的是个数字,那就用吧= 243
而不是LIKE
.WHERE
去追求FROM
条款。JOIN
是中的操作员FROM
条款。这个
JOIN
没有必要。除非您正在从users表中获取列(或者需要它来进行过滤,这是非常可疑的),否则不要费心处理它。e4yzc0pl3#
把钥匙放好
WHERE
(最后一个)后面的子句ON
条款。