日期:2014-05-16  浏览次数:20917 次

求句mysql,谢谢
示例表truck:
id------start-----end------price
1-------上海------北京------111
2-------上海------南京------222
3-------香港------深圳------333
4-------北京------上海------444

需求:
为所有没有反向数据记录,添加反向的记录,地名对调,价格不变。
不用非要一句语句完成,也可以是脚本

比如:
“1-------上海------北京------111”拥有反向数据,“4-------北京------上海------444”就不做新增
“2-------上海------南京------222”没有反向数据,就新增一条数据:“id自增-------南京------上海------222”



------解决方案--------------------

SQL code
CREATE PROCEDURE addCity6()
BEGIN

    DECLARE done INT DEFAULT FALSE;
    DECLARE S_START CHAR(20);
    DECLARE S_END CHAR(20);
    DECLARE PRICE INT;

    DECLARE CUR CURSOR FOR SELECT start,price,end 
              FROM truck 
                 WHERE id NOT IN (
                          select a.id from truck a, truck b where a.start=b.end and a.end = b.start);
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

  OPEN CUR;
  REPEAT
    FETCH CUR INTO S_START,PRICE,S_END;
  IF NOT done THEN
        INSERT INTO truck(start,price,end)VALUES(S_END,PRICE,S_START);
        COMMIT;
  END IF;
 UNTIL done END REPEAT;
 CLOSE CUR;
END;