-2

のような値を格納するためにどのデータ型を使用できますか1,2,3,4,5。文字列ではなく整数のままにしておきたいです。を使用できることはわかっていますvarchar() or enum() or set()が、それらは文字列です。MySQL バージョンを使用しています5.5.25。格納される値も固定されていません。1または_1,2,3

4

3 に答える 3

2

適切なデータ型はテーブルです。行ごとに 1 つの値を格納できます。

通常、値のグループは何らかのエンティティに割り当てられるため、これは関連テーブルになります。何かのようなもの:

create table EntityNumbers (
    EntityNumberId int auto_increment primary key,
    EntityId int references Entities(EntityId),
    Number int
);

次に、リストを返したい場合は、次を使用しますgroup_concat()

select EntityId, group_concat(Number)
from EntityNumbers
group by EntityId;
于 2013-08-31T12:38:33.580 に答える
1

MySql にはそのようなデータ型はありません。1 つのフィールドに複数の値を格納するために使用できる唯一のデータ型は、文字列のみを格納するSetデータ型です。

リレーショナル データベースでは、この問題の通常の解決策は、元のテーブルの各行に対して複数の行を持つ、元のテーブルへの外部キーを持つテーブルを追加することです。

だから代わりに

id | name | values
1  | foo  | 7,8,9

あなたが持っているだろう

id | name 
1  | foo  

id | foreign_key | value
1  |  1          | 7
2  |  1          | 8
3  |  1          | 9

を使用してそれらを選択します

SELECT value from original_table join additional_table ON (id == foreign_key)
  WHERE original_table.id == 1

その結果、3 つの結果行が生成されます。

于 2013-08-31T12:38:42.283 に答える
0
tinyint()  stores 1 byte 
smallint() stores 2 bytes
mediumint() stores 3 bytes
int() stores 4 bytes
于 2013-08-31T12:39:28.960 に答える