我得到了一个#1248-每个派生表都必须有自己的别名。我正在使用WAMP服务器 [英] I am getting a #1248 - Every derived table must have its own alias. I am using a WAMP server

查看:20
本文介绍了我得到了一个#1248-每个派生表都必须有自己的别名。我正在使用WAMP服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人能告诉我这是怎么回事吗?为什么我收到错误#1248-每个派生表都必须有自己的别名。?

UPDATE (SELECT t.crime_definition p1, s.crime_definition p2
  FROM crime_2007 t, crime_2010 s 
  WHERE crime_2007.crime_id_2007 = crime_2010.crime_id)
SET p1 = p2

我研究了很长时间,找不到问题所在。我正在尝试将一个表中的列复制到另一个表中的列。

提前感谢您!

推荐答案

"派生"表是括号之间的SELECT。您可以(在您的情况下也应该)为其指定一个(短暂的)名称。

UPDATE ( SELECT t.crime_definition p1, s.crime_definition p2
  FROM crime_2007 t, crime_2010 s 
  WHERE crime_2007.crime_id_2007 = crime_2010.crime_id
       ) AS dummyName
SET p1 = p2

但上述方法(至少在MySQL中)也不起作用,因为它会告诉您"目标表dummyName不可更新"。

您可以使用它,因为它是标准的ANSI SQL:

,应该可以在许多系统中使用
UPDATE crime_2007
SET crime_definition =
    ( SELECT s.crime_definition
      FROM crime_2010 s 
      WHERE crime_2007.crime_id_2007 = s.crime_id
    )

许多系统使用"非标准"SQL,比如Lamak对SQL-Server的回答,这只能在MySQL中运行:

UPDATE crime_2007 t, crime_2010 s
SET t.crime_definition = s.crime_definition
WHERE t.crime_id_2007 = s.crime_id

这篇关于我得到了一个#1248-每个派生表都必须有自己的别名。我正在使用WAMP服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆