免费注册 查看新帖 |

Chinaunix

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

问个SQL语句 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-29 09:54 |只看该作者 |倒序浏览
我有一个数据库表test,里面放置了默认的数据如下


  1. ip             groupnum              dep

  2. 0.0.0.0     0                            un

复制代码

这里我想插入一条新的ip地址的数据,采用默认数据,执行完以后结果如下

  1. ip                           groupnum              dep

  2. 0.0.0.0                   0                            un
  3. 192.168.0.1           0                            un

复制代码

请问SQL语句怎么写啊,谢谢了!

论坛徽章:
0
2 [报告]
发表于 2006-05-29 10:04 |只看该作者
原帖由 Thinkor 于 2006-5-29 09:54 发表
我有一个数据库表test,里面放置了默认的数据如下


  1. ip             groupnum              dep

  2. 0.0.0.0     0                            un

复制代码

这里我想插入一条新的ip地址的数据,采用默 ...


什么叫采用默认数据?
你的数据表具体是什么样子的?数据类型?

论坛徽章:
0
3 [报告]
发表于 2006-05-29 10:54 |只看该作者
呵呵,没有说清楚,表结构是这样的:

  1. mysql> desc test;
  2. +----------+--------------+------+-----+---------+-------+
  3. | Field    | Type         | Null | Key | Default | Extra |
  4. +----------+--------------+------+-----+---------+-------+
  5. | ip       | varchar(16)  |      | PRI |         |       |
  6. | groupnum | int(11)      |      |     | 0       |       |
  7. | dep      | varchar(128) |      |     |         |       |
  8. +----------+--------------+------+-----+---------+-------+
  9. 3 rows in set (0.01 sec)
复制代码

开始出示化的时候有一行数据:

  1. mysql> select * from test;
  2. +---------+----------+------------+
  3. | ip      | groupnum | dep        |
  4. +---------+----------+------------+
  5. | 0.0.0.0 |        0 | unregister |
  6. +---------+----------+------------+
  7. 1 row in set (0.00 sec)

复制代码

我想如果新的ip到来的时候,首先按照默认的groupno和dep给它赋值,比如插入192.168.0.1的时候,把它的groupnum和dep设置为0.0.0.0的groupnum和dep,结果如下:

  1. mysql> select * from test;
  2. +-------------+----------+------------+
  3. | ip          | groupnum | dep        |
  4. +-------------+----------+------------+
  5. | 0.0.0.0     |        0 | unregister |
  6. | 192.168.0.1 |        0 | unregister |
  7. +-------------+----------+------------+
  8. 2 rows in set (0.01 sec)
复制代码

论坛徽章:
0
4 [报告]
发表于 2006-05-29 12:29 |只看该作者
创建表的时候设置默认值
groupnum default 0
dep default 'unregister'

???

论坛徽章:
0
5 [报告]
发表于 2006-05-29 13:35 |只看该作者
原帖由 tchhyc 于 2006-5-29 12:29 发表
创建表的时候设置默认值
groupnum default 0
dep default 'unregister'

???

这样对于1行是可以,但是我的表以后可能要加入多行的默认值,其中groupnum不同,比如开始出示化的时候是:

  1. mysql> select * from test;
  2. +---------+----------+------------+
  3. | ip      | groupnum | dep        |
  4. +---------+----------+------------+
  5. | 0.0.0.0 |        0 | unregister |
  6. | 0.0.0.0 |        1 | unregister |
  7. +---------+----------+------------+
  8. 1 row in set (0.00 sec)
复制代码

如果插入192.168.0.1后为

  1. mysql> select * from test;
  2. +-------------+----------+------------+
  3. | ip          | groupnum | dep        |
  4. +-------------+----------+------------+
  5. | 0.0.0.0     |        0 | unregister |
  6. | 0.0.0.0     |        1 | unregister |
  7. | 192.168.0.1 |        0 | unregister |
  8. | 192.168.0.1 |        1 | unregister |
  9. +-------------+----------+------------+
  10. 2 rows in set (0.01 sec)
复制代码


这样子用默认值就不行了吧。

论坛徽章:
0
6 [报告]
发表于 2006-05-29 14:20 |只看该作者
数据库只会根据建立表时的字段默认值来赋值的,如果你要达到你的效果,最好用程序来控制
数据的默认插入

论坛徽章:
0
7 [报告]
发表于 2006-05-29 14:51 |只看该作者
没有这种SQL语句吗,像下面这种

  1. mysql> insert into test values ("192.168.0.1",select groupnum,dep from test);
复制代码

呵呵,当然上面的不对了~
如果没有那只能创建一个临时表了转一下了,总觉得应该有这种SQL语句!

  1. mysql> select * from test;
  2. +---------+----------+------------+
  3. | ip      | groupnum | dep        |
  4. +---------+----------+------------+
  5. | 0.0.0.0 |        0 | unregister |
  6. | 0.0.0.0 |        1 | unregister |
  7. | 0.0.0.0 |        2 | unregister |
  8. | 0.0.0.0 |        3 | unregister |
  9. | 0.0.0.0 |        4 | unregister |
  10. | 0.0.0.0 |        5 | unregister |
  11. +---------+----------+------------+
  12. 6 rows in set (0.00 sec)

  13. mysql> create temporary table test1 select * from test;
  14. Query OK, 6 rows affected (0.04 sec)
  15. Records: 6  Duplicates: 0  Warnings: 0

  16. mysql> update test1 set ip='192.168.0.1';
  17. Query OK, 6 rows affected (0.00 sec)
  18. Rows matched: 6  Changed: 6  Warnings: 0

  19. mysql> insert into test select * from test1;
  20. Query OK, 6 rows affected (0.02 sec)
  21. Records: 6  Duplicates: 0  Warnings: 0

  22. mysql> select * from test;
  23. +-------------+----------+------------+
  24. | ip          | groupnum | dep        |
  25. +-------------+----------+------------+
  26. | 0.0.0.0     |        0 | unregister |
  27. | 0.0.0.0     |        1 | unregister |
  28. | 0.0.0.0     |        2 | unregister |
  29. | 0.0.0.0     |        3 | unregister |
  30. | 0.0.0.0     |        4 | unregister |
  31. | 0.0.0.0     |        5 | unregister |
  32. | 192.168.0.1 |        0 | unregister |
  33. | 192.168.0.1 |        1 | unregister |
  34. | 192.168.0.1 |        2 | unregister |
  35. | 192.168.0.1 |        3 | unregister |
  36. | 192.168.0.1 |        4 | unregister |
  37. | 192.168.0.1 |        5 | unregister |
  38. +-------------+----------+------------+
  39. 12 rows in set (0.00 sec)
复制代码

这样子总觉得很笨哈~~!

论坛徽章:
0
8 [报告]
发表于 2006-05-29 15:15 |只看该作者
insert into test (ip, groupnum, dep) select '192.168.0.1', groupnum, dep from test as X; 这样?
比较好奇你这个应用在哪里?

论坛徽章:
0
9 [报告]
发表于 2006-05-29 15:22 |只看该作者
原帖由 rardge 于 2006-5-29 15:15 发表
insert into test (ip, groupnum, dep) select '192.168.0.1', groupnum, dep from test as X; 这样?
比较好奇你这个应用在哪里?

呵呵~~太谢谢rardge了~就是俺想要的结果。
我在建立一个规则库,其中有一套默认规则,ip=0.0.0.0,然后这个ip的规则有20多条,这20多条规则号不同,我想要的是当新的代理端连接上来以后(比如192.168.1.100),我就用这套默认规则来初始化192.168.1.100的规则,基本就是这样子了!

论坛徽章:
0
10 [报告]
发表于 2006-05-29 17:25 |只看该作者
原帖由 rardge 于 2006-5-29 15:15 发表
insert into test (ip, groupnum, dep) select '192.168.0.1', groupnum, dep from test as X; 这样?
比较好奇你这个应用在哪里?


insert into后面可以跟select子句?呵呵,第一次看到呢,孤陋寡闻了
那么,X表里得出多少条纪录结果就插入前面那个表多少条纪录,是这个意思吗?
也就是说要插入的数据来源可以是一个结构相容的表?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP