免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7648 | 回复: 3
打印 上一主题 下一主题

在mysql中update不支持where后面的select语句吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-31 10:53 |只看该作者 |倒序浏览
3、带子查询的更新语言
例子3:延长张三借阅的数据结构的借阅期为180天。
UPDATE temp_record
SET borrow_term=180
   WHERE record_id=
    (SELECT record_id FROM temp_record,browser_info,book_info
WHERE  browser_info.browser_name=’张三’ AND  book_name=’数据结构’
AND temp_record.book_id= book_info.book_id
AND temp_record.browser_id= browser_info.browser_id
)

注解:在mysql中update不支持where后面的select语句。
在MSsql可以执行以上语句。

4、使用连接信息更新数据
例子4:延长张三借阅的“数据结构”的借阅期为180天(例子3的另外一种写法)。
UPDATE temp_record
SET borrow_term=180
    FROM temp_record,browser_info,book_info
    WHERE browser_name='张三' AND  book_name='数据结构'
AND temp_record.book_id= book_info.book_id
AND temp_record.browser_id= browser_info.browser_id
注解:在mysql中不支持此中写法。在MSsql可以执行以上语句。

相关数据表:
CREATE TABLE temp_record(
        record_id  timestamp  NOT NULL,
        browser_id char (12)  NOT NULL ,
        book_id char (12) NOT NULL ,
        borrow_time datetime NOT NULL ,
        return_time datetime,
borrow_ term smallint default 60,
        PRIMARY KEY(record_id),
        FOREIGN KEY( browser_id) REFERENCES browser_info(browser_id),
        FOREIGN KEY(book_id) REFERENCES book_info(book_id)
)
-------------------
CREATE TABLE book_info (
        book_id char (12) NOT NULL ,
        book_name varchar (100)   NOT NULL ,
        type_id char(  NOT NULL ,   
        book_status int NOT NULL,
        book_isbn varchar (50) NOT NULL ,   
        book_author varchar (50)  NOT NULL ,
        book_publisher varchar (100)  NOT NULL ,
        book_price decimal(8, 2) NOT NULL ,
        book_counts int NOT NULL ,
        book_description text,
        book_foreword text ,
        book_catalog text,
        book_cover image ,
        book_publishdate datetime NOT NULL ,
        book_hits int NOT NULL ,
        PRIMARY KEY(book_id),
        FOREIGN KEY(type_id) REFERENCES book_type(type_id)
)
---------------------------
CREATE TABLE browser_info(
        browser_id char (12)  NOT NULL ,
        browser_name char (12)  NOT NULL ,
        browser_pwd char (12)  NOT NULL ,
        browser_popedom int NOT NULL,
PRIMARY KEY(browser_id )
)

论坛徽章:
0
2 [报告]
发表于 2004-08-03 09:19 |只看该作者

在mysql中update不支持where后面的select语句吗?

select *
from table1
where table.id in
(
        select  id  from table2 where 1
)

这样的使用“IN”表示集合的语句也不行喔,郁闷死 。。。

wo shi cai liao

论坛徽章:
0
3 [报告]
发表于 2004-08-03 10:40 |只看该作者

在mysql中update不支持where后面的select语句吗?

mysql暂时不支持子查询,可以用以下的形式来代替
update table1,table2
set table1.column1=value1,
      table1.column2=value2,
      ...
where table1.?=table2.?

论坛徽章:
0
4 [报告]
发表于 2004-08-03 12:56 |只看该作者

在mysql中update不支持where后面的select语句吗?

如果可以的话,还是把你的MySQL服务器升级到5.0版吧。这些问题都已经解决了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP