ID   NAME  VALUE  X
1     A      10   0
2     B      12   0
3     C      15   0
4     D      20   0
以B为标准  查询数据库的所有数据 通过VALUE值计算 更新X值 A 的x值更新为-20  
A 的x值更新为0
A 的x值更新为30
A 的x值更新为70  
这样的SQL语句怎么实现??

解决方案 »

  1.   

    A 的x值更新为-20   
    B 的x值更新为0
    C 的x值更新为30
    D 的x值更新为70   
      

  2.   

    mysql> select * from tangyu477;
    +------+------+-------+------+
    | id   | name | value | X    |
    +------+------+-------+------+
    |    1 | A    |    10 |    0 |
    |    2 | B    |    12 |    0 |
    |    3 | C    |    15 |    0 |
    |    4 | D    |    20 |    0 |
    +------+------+-------+------+
    4 rows in set (0.00 sec)mysql> update tangyu477 a , (select VALUE from tangyu477 where NAME='B') b
        -> set a.x=(a.value-b.value)*10;
    Query OK, 3 rows affected (0.05 sec)
    Rows matched: 4  Changed: 3  Warnings: 0mysql> select * from tangyu477;
    +------+------+-------+------+
    | id   | name | value | X    |
    +------+------+-------+------+
    |    1 | A    |    10 |  -20 |
    |    2 | B    |    12 |    0 |
    |    3 | C    |    15 |   30 |
    |    4 | D    |    20 |   80 |
    +------+------+-------+------+
    4 rows in set (0.00 sec)mysql>
      

  3.   


    顺便问下 SQL是不是基本可以解决大部分编程要做的事情??
      

  4.   

    回答显然不是否则还需要编程语言工具做什么呢? 并且即使有些任务可以用SQL语句来实现也未必是最佳的,很多情况下反而不如在程序中实现更高效。
      

  5.   

    我的理解是 程序实现趋向横向的 SQL实现更趋向竖着来
    不知道我的理解 正确不?
    程序: A-B-C-D-
    SQL: A-B A-B A-B我问的这种更适合SQL吧 程序实现起来 一看就是效率慢帖子加分 希望你不吝赐教
      

  6.   

    没看懂你的这个程序是指什么。
    程序: A-B-C-D-
    SQL: A-B A-B A-B
    仅对你在一楼提出的这个问题,用SQL语句显然效率比较高。
      

  7.   


    那能否帮我举个例子 什么样的情况下 用编程比SQL更好,比SQL的效率更好
      

  8.   

    比如MYSQL中,由于没有ROWNUM函数。这样想显示这个序号则不如由程序来实现效率高。
    还有那种行列互换的显示,由程序实现更方便。
      

  9.   

    参考一下这两个贴子。http://blog.csdn.net/ACMAIN_CHM/archive/2009/06/19/4283943.aspxhttp://blog.csdn.net/ACMAIN_CHM/archive/2009/04/20/4095531.aspx