当前位置: 首页 > 面试题库 >

MYSQL更新语句内部联接表

翟冯浩
2023-03-14
问题内容

我不知道是什么问题。使用MySQL 5.0尝试运行以下MYSQL更新语句时出现编译错误

  UPDATE  b
SET b.mapx = g.latitude,
  b.mapy = g.longitude
FROM business AS b
INNER JOIN business_geocode g ON b.business_id = g.business_id
WHERE  (b.mapx = '' or b.mapx = 0) and
  g.latitude > 0

所有字段名称都是正确的。有什么想法吗?


问题答案:

尝试这个:

UPDATE business AS b
INNER JOIN business_geocode AS g ON b.business_id = g.business_id
SET b.mapx = g.latitude,
  b.mapy = g.longitude
WHERE  (b.mapx = '' or b.mapx = 0) and
  g.latitude > 0

更新:

既然您说查询产生了语法错误,所以我创建了一些可以对其进行测试的表,并确认查询中没有语法错误:

mysql> create table business (business_id int unsigned primary key auto_increment, mapx varchar(255), mapy varchar(255)) engine=innodb;
Query OK, 0 rows affected (0.01 sec)

mysql> create table business_geocode (business_geocode_id int unsigned primary key auto_increment, business_id int unsigned not null, latitude varchar(255) not null, longitude varchar(255) not null, foreign key (business_id) references business(business_id)) engine=innodb;
Query OK, 0 rows affected (0.01 sec)

mysql> UPDATE business AS b
    -> INNER JOIN business_geocode AS g ON b.business_id = g.business_id
    -> SET b.mapx = g.latitude,
    ->   b.mapy = g.longitude
    -> WHERE  (b.mapx = '' or b.mapx = 0) and
    ->   g.latitude > 0;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0

看到?没有语法错误。我针对MySQL 5.5.8进行了测试。



 类似资料:
  • 问题内容: 我有一个在MySQL中运行良好的查询,但是在Oracle上运行该查询时,出现以下错误: SQL错误:ORA-00933:SQL命令未正确终止 00933。00000-“ SQL命令未正确终止” 查询是: 问题答案: 该语法在Oracle中无效。你可以这样做: 或者您 可以 执行以下操作: 它取决于内联视图是否被Oracle更新( 要更新第二条语句取决于 此处 列出的一些规则 )。

  • 问题内容: 我想在具有多个联接的语句中更新表。虽然我知道联接的顺序并不重要(除非您使用的是优化程序提示),但我还是以某种最直观的方式对它们进行了排序。但是,这导致我要更新的表不是我开始使用的表,并且我无法更新它。 我想做的一个虚拟例子是: 这里有许多关于使用联接进行更新的帖子,但是它们总是首先更新表。我知道这在SQL Server中是可能的,希望在MySQL中也可能! 问题答案: MySQL中的多

  • 我试图在我的SQL中用一个内部连接来做一个UPDATE语句。我已经做了示例,并将表名和表列编辑到我的表中。但我的MYSQL仍然不断给我一个错误(#1064)。 错误 您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,在第5行的“来自收藏夹INNER JOIN图像ONfavorites.image=images.idW”附近使用正确的语法 SQL 提前感谢您在这一点上帮助我。 谨致问

  • 问题内容: MySql中有没有一种方法可以创建用于联接的内联表? 就像是: 那会输出 我可以在这样的联接中使用: 我意识到我可以做到 但这似乎很邪恶 我不想执行存储过程,因为在每次查询和数据大小上,a,b,c都可能发生变化。另外,存储过程也需要保存在数据库中,我不想只为此修改数据库。视图是一回事。 我真正想要的是使用更好的语法的东西。 问题答案: 我真正在寻找的是使用更好的语法执行SELECT 1

  • 问题内容: 我想使用我的数据库通过电子邮件与我的用户联系。我想确保我不会不小心联系同一位用户两次。为此,我有一张表来跟踪与谁联系以及何时联系。 当我执行MYSQL查询时,我想从表中选择电子邮件,并确保表中不存在这些条目。 要在句子中添加短语:如果电子邮件不在Contacted_Table中,请从Email_Table中选择电子邮件 也许有一种完全不同的方法。我愿意接受所有建议:)谢谢:) 问题答案

  • 问题内容: 我有这个查询: 在访问时执行此查询时,出现“语法错误”。你有看错吗? 谢谢 问题答案: 您可以使用a来对更新查询中的其他表求和。具有聚合的子查询将无法工作,因为它们不可更新。