查找给定范围内的数字MySQL SQL

时间:2014-03-20 18:57:30

标签: mysql sql ddl create-table

表的My DDL Schema看起来像这样......

CREATE TABLE StockCodes (
    stockCode SMALLINT AUTO_INCREMENT,
    stockName VARCHAR(100),
    stockStart SMALLINT,
    stockFinish SMALLINT,
    stockCurrentNumber SMALLINT
); 

如何实现stockCurrentNumber,这样我得到的记录列表如... stockCurrentNumber 001,002,003,004,005。

另外,如何捆绑stockCode和stockCurrentNumber以形成复合主键。

另外,在删除库存时如何删除单个stockCurrentNumber?

我真的很感激任何帮助

2 个答案:

答案 0 :(得分:0)

在列上使用ZEROFILL定义。

stockCurrentNumber smallint(3) unsigned zerofill

这会导致列中的所有插入都被填充0

示例
当您插入1时,它将存储为001。您可以与field = 1等实际值进行比较。

当使用相同的值与其他值连接时,填充的零不会丢失。

示例
如果stockCode6stockCurrentNumber9,则为

concat( stockCode, stockCurrentNumber )

将导致6009

参考MySQL: SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

答案 1 :(得分:0)

我不确定我是否理解你:

这是您使用复合主键创建表格的方法,请注意stockCurrentNumber varchar不会丢失左0

CREATE TABLE StockCodes (
stockCode SMALLINT AUTO_INCREMENT,
stockName VARCHAR(100),
stockStart SMALLINT,
stockFinish SMALLINT,
stockCurrentNumber varchar(255),
PRIMARY KEY(stockCode, stockCurrentNumber)
); 

然后删除:

DELETE FROM StockCodes WHERE stockCode='x' AND stockCurrentNumber='y';