【问题标题】:mysql insert record before lastmysql 在最后一个之前插入记录
【发布时间】:2013-09-16 02:52:27
【问题描述】:

我有一个小问题 我有一个包含以下记录的数据库

 tag
 ---
 a
 b
 c
 eof

eof 必须始终是最后一条记录

如何在之前插入一个字段 EOF 来避免这种情况?

如果我删除 eof 并插入一个字段并且 插入 eof 后,我发现这很奇怪 情况,mysql先写eof??

 tag
 ---
 a
 b
 c
 eof
 d

我用 order by 试过了,但没有用 我按位置阅读记录

提前致谢

【问题讨论】:

  • 请张贴您的表格结构。在 mysql 命令提示符中描述 db_name。 etc:索引、主键等
  • CREATE TABLE tsynapse (id INT AUTO_INCREMENT, tag TEXT, token TEXT, rule TEXT, trans TEXT, PRIMARY KEY (id)) ENGINE = MyISAM DEFAULT CHARSET=utf8;
  • 从 tsynapse 中删除 tag='eof' ;
  • INSERT INTO tsynapse ( tag , token , rule , trans ) VALUES ( "draw_image" , "disegna^99 immagine^99 $1 {current_surface}" , "" , "draw_image ( $1 );" ) ; /* ************************************************ ********** EOF ; / INSERT INTO tsynapse (tag , token , rule , trans ) VALUES ("eof" , "eof" , "" , " / eof */ ;" ) ;

标签: php mysql record


【解决方案1】:

这将永远返回eof

select * from tsynapse 
order by case when tag = 'eof' 
              then 2 
              else 1 
         end asc, tag asc

【讨论】:

    【解决方案2】:

    你需要一个额外的字段我的朋友,这将是你的索引

    UPDATE tablename SET position = CASE 
    WHEN position >= $position THEN position+1 
    ELSE position END
    

    其中 $position 是位置列的 MAX(),那么您可以插入新条目而不是旧的 MAX()。

    如果您需要进一步的帮助,请告诉我

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多