如何连接和更改/更新表

时间:2012-08-23 20:43:30

标签: mysql sql

  

可能重复:
  How to insert the next highest number into the database

我正在使用MYSQL

我有一个名为TeacherId的列,它自动递增,如下所示:

TeacherId

1
2
3
4

我想要做的是在数字前添加字母“T”,使其变为:

TeacherId

T1
T2
T3
T4

如何更新或更改表格来执行此操作?

以下是我的尝试但不起作用:

UPDATE Teacher SET TeacherId = CONCAT('T',TeacherId)

3 个答案:

答案 0 :(得分:5)

我强烈建议您考虑在查询时将T附加到 display ,而不是尝试在每一行上存储T.我不明白以这种方式存储数据的目的,特别是如果您有其他表以其原生形式使用TeacherId值。

如果你需要区分教师和管理员,那么两个想法:

  1. 该表应称为人员,而不是教师。
  2. 这仍然可以存储为单独的列,例如PersonnelType。
  3. 我知道你可能被告知它应该显示为T3等,但他们肯定没有明确地告诉你“我们希望你将T和3一起存储在同一列中,否则。”你可以在一个糟糕且无法使用的设计中展示它们而不用将它们组合在一起。

答案 1 :(得分:1)

选择数据并自动在TeacherId前面添加字母T:

SELECT *, CONCAT('T', TeacherId) AS TeacherId2 FROM Teacher

答案 2 :(得分:0)

如果您必须在表格中使用它,请在表格中创建第二列,这样您的创建将如下所示:

CREATE TABLE  `teacher` (

`teacherId` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`t` CHAR( 10 ) NOT NULL DEFAULT ''
) 

然后创建一个触发器,将第二列设置为与您的id连接的“T”。

delimiter |

CREATE TRIGGER teacherInsert after INSERT ON teacher
  FOR EACH ROW BEGIN
    UPDATE teacher SET `t` = concat('T', teacherId);
  END;
|

delimiter ;

或者,您也可以按照Aaron的建议行事,并在查询时获取:

select teacherId, concat('T', teacherId) from teacher