【问题标题】:CONCAT_WS Three Fields to Create PRIMARY KEY in CREATE TABLE StatementCONCAT_WS 在 CREATE TABLE 语句中创建 PRIMARY KEY 的三个字段
【发布时间】:2016-07-05 08:09:25
【问题描述】:

我正在为一个相当大的表编写CREATE TABLE 语句,该表将通过.csv 文件加载。

我需要通过将三个字段连接在一起来创建一个PRIMARY KEY

  • STORE_NBR
  • CONTROL_NBR
  • LINE_NBR

并将新创建/命名的字段附加到每条记录的开头。

这在CREATE TABLE 语句中是否可行?还是我必须在事后使用APPEND

那我该怎么做呢?

编辑 ----- 2016 年 3 月 21 日


我仍然被告知我应该能够在创建表本身时连接三个字段,即 -

CREATE TABLE Mistints(
        CONCAT(storeNbr,controlNbr,lineNbr) AS pKey,
        storeNbr INT,
        controlNbr INT,
        lineNbr INT,
        salesNbr VARCHAR(15) etc etc

但我在尝试这样做时遇到了错误。我的主管希望将串联字段附加到每条记录的开头,并将其作为主键。有没有办法在 Create Table 语句中这样做?还是我必须在事后进行更新?或者在我加载表格时这样做(通过 .csv 文件)?

【问题讨论】:

  • 为什么你认为你需要那 3 部分的 PK?这3个分别代表什么?根据通常的命名约定,LINE_NBR 听起来像是一个独特的“计数器”,它本身可能就是 PK(设置为 AUTO_INCREMENT)。然后在您的查询中,您可以在查询中使用 SELECT... CONCAT(STORE_NBR,'-', CONTROL_NBR)...。
  • 我必须遵循非常具体的指导方针。

标签: mysql concatenation primary-key create-table


【解决方案1】:

可以通过CREATE TABLE 在表定义的末尾添加以下行:

CREATE TABLE TAB_NAME(
  STORE_NBR [data type]([size]) [column constraint],
  CONTROL_NBR [data type]([size]) [column constraint],
  LINE_NBR [data type]([size]) [column constraint],
  .
  .
  .
  PRIMARY KEY (STORE_NBR, CONTROL_NBR, LINE_NBR)
  );

【讨论】:

  • 在与我的主管进一步协商后,确定我实际上必须先“处理” .csv 文件,对其进行排序并将字段添加到每条记录中,然后再将其加载到表中!跨度>
  • 但这给了我一个提醒/想法,告诉我如何追求这个。谢谢。
  • 仍然 - 我是否能够使用这些字段创建表,加载表,然后使用 CREATE TABLE AS 和 SELECT CONCAT (STORE_NBR, CONTROL_NBR, LINE_NBR) AS PKEY,选择所有剩余的列,然后在最后选择 PRIMARY KEY (PKEY)?
猜你喜欢
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 2012-12-12
  • 2022-12-21
  • 1970-01-01
  • 2018-06-06
相关资源
最近更新 更多