关于多表关联Update 的sql问题的请教!

dongdong008888 2009-12-22 01:51:18
UPDATE dreye_uw.pay_license as plce SET plce.plc_text = (SELECT w.plc_text FROM ( SELECT e.plc_text, e.pl_id FROM ( SELECT pal.pl_id, plc.plc_text, plc.plc_time FROM dreye_uw.pay_license pal LEFT JOIN dreye_uw.pay_license_content plc ON plc.plc_license_id = pal.pl_id WHERE plc.plc_state = 'product' ORDER BY plc.plc_time DESC ) AS e GROUP BY e.pl_id ) AS w where plce.pl_id = w.pl_id )


請各位幫忙看下 以上代碼存在什麽問題?
老是報錯:#1093 - You can't specify target table 'pay_license' for update in FROM clause


...全文
226 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2009-12-22
  • 打赏
  • 举报
回复
[Quote]不過我有個疑問:為什麽pay_license裱中plc_text字段內容和pay_license_content 裱中plc_text內容相同的時候,不執行任何結果[/Quote]能给个例子说明吗?你的代码看起来比较长。
dongdong008888 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acmain_chm 的回复:]
看一下你的这个结果有些什么?

SQL codeSELECT e.plc_text, e.pl_idFROM
(SELECT pal.pl_id, plc.plc_text, plc.plc_timeFROM dreye_uw.pay_license palLEFTJOIN dreye_uw.pay_license_content plcON plc.plc_license_id= pal.pl_idWHERE plc.plc_state='product'ORDERBY plc.plc_timeDESC
)AS eGROUPBY e.pl_id

找一条记录符合on plce.pl_id = w.pl_id 要求的记录  贴出来大家分析一下。
[/Quote]
已經有結果了。
dongdong008888 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acmain_chm 的回复:]
SQL codeupdate pay_license plceinnerjoin (SELECT e.plc_text, e.pl_id FROM
(SELECT pal.pl_id, plc.plc_text, plc.plc_time FROM dreye_uw.pay_license palLEFTJOIN dreye_uw.pay_license_content plcON ?-
[/Quote]
不好意思了,已經出項了預期的結果。謝謝。

不過我有個疑問:為什麽pay_license裱中plc_text字段內容和pay_license_content 裱中plc_text內容相同的時候,不執行任何結果
ACMAIN_CHM 2009-12-22
  • 打赏
  • 举报
回复
看一下你的这个结果有些什么?

 SELECT e.plc_text, e.pl_id FROM 
( SELECT pal.pl_id, plc.plc_text, plc.plc_time
FROM dreye_uw.pay_license pal LEFT JOIN dreye_uw.pay_license_content plc
ON plc.plc_license_id = pal.pl_id
WHERE plc.plc_state = 'product'
ORDER BY plc.plc_time DESC
) AS e
GROUP BY e.pl_id


找一条记录符合on plce.pl_id = w.pl_id 要求的记录 贴出来大家分析一下。
dongdong008888 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acmain_chm 的回复:]
SQL codeupdate pay_license plceinnerjoin (SELECT e.plc_text, e.pl_idFROM
(SELECT pal.pl_id, plc.plc_text, plc.plc_timeFROM dreye_uw.pay_license palLEFTJOIN dreye_uw.pay_license_content plcON ?-
[/Quote]

SQL 語句是沒錯,可執行完成只有,沒有影響一行。。。

ACMAIN_CHM 2009-12-22
  • 打赏
  • 举报
回复
update pay_license plce inner join ( 
SELECT e.plc_text, e.pl_id FROM
( SELECT pal.pl_id, plc.plc_text, plc.plc_time
FROM dreye_uw.pay_license pal LEFT JOIN dreye_uw.pay_license_content plc
ON plc.plc_license_id = pal.pl_id
WHERE plc.plc_state = 'product'
ORDER BY plc.plc_time DESC
) AS e
GROUP BY e.pl_id
) w on plce.pl_id = w.pl_id
set plce.plc_text=w.plc_text
dongdong008888 2009-12-22
  • 打赏
  • 举报
回复
pay_license 表中有 pl_id,plc_text 2個字段

pay_license_content 裱中有plc_id,pl_id,plc_time,plc_text4個字段。
pay_license_contentpay_license 裱中關聯plc_text pl_id,其中pay_license中的plc_text 字段來自pay_license_content裱中,存放的是pay_license_content裱中最新的內容;而pay_license_content表中的pl_id字段來自於pay_license表中。


pay_license_content表存有關於很多pay_license--》pl_id的內容。。

我現在主要目的是要把pay_license_content中最新的一條pl_id內容更新到表pay_license中去。。。
阿_布 2009-12-22
  • 打赏
  • 举报
回复
列出一部分数据和要得到的结果!你的子查询嵌套的也够多的。

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧