具体为每个名称分配一个ID

时间:2017-10-05 06:41:56

标签: java mysql eclipse

我正在尝试为每个名称分配ID,例如。如果agentName是Bob,则为Bob分配ID,并且当插入新的数据行且agentName为Bob时,ID将保持不变。

这是sql表,有什么方法可以编码或使用SQL来查询它吗?

  ----------------------------------------------
    ID  AgentName       Conversation             |
    ---------------------------------------------|          
    1   Bob             Hi                       |
    2   Mary            it should be 20-24 Jan   |
    3   Bob             oops                     |
    4   Jane            yeah feb                 |
    5   Jane            my typo                  |
    ----------------------------------------------

1 个答案:

答案 0 :(得分:1)

在java中,你可以创建一个HashMap(使用代理名称作为键,id作为值)。然后为每个插入检查HashMap中是否存在代理名称;如果你找到一个值使用它,否则在地图中添加一个新元素。不要忘记初始化地图

举个例子:

public class Prove {

  public static HashMap<String, Integer> agentsId = new HashMap<String, Integer>();
  public static Integer counter = 0;

  public static void main(String[] args) {

      //Add new agent
      System.out.println("Bob " + addAgent("Bob"));
      System.out.println("Mary " + addAgent("Mary"));

      //Add old agent (return old id)
      System.out.println("Bob " + addAgent("Bob"));
  }

  public static int addAgent(String name) {
      if(agentsId.get(name)!=null) {
          //do your work
          return agentsId.get(name);
      } else {
          counter = counter + 1;
          agentsId.put(name, counter);
          //do your work
          return agentsId.get(name);
      }
  }

}