MySQL中的类联盟专栏

时间:2014-02-14 15:42:53

标签: mysql

在MySQL中是否可以使用2行或更多行共享列,例如C ++联合类型? 在没有更多空间和性能的情况下,我正在寻找的是什么?

1 个答案:

答案 0 :(得分:3)

您所描述的“C ++联合类型”在您的评论中有更好的解释:

  

我有一张桌子很多行。每行有5列。现在,我希望行#1和#2共享列#1。当我说分享时,我的意思是:a)如果价值在一个中改变,它将改变为另一个。 b)空间不会加倍。

您所描述的是数据库最基本的部分:规范化和关系数据。

您有表国家/地区:

ID=1, countryname="Amurika"

和城市:

ID=1,countryid=1, cityname="Boston"
ID=2,countryid=1, cityname="New York"
ID=3,countryid=1, cityname="Boise"

如果您想获取记录,请执行以下操作:

SELECT cities.name, countries.countryname
FROM cities INNER JOIN countries on countries.id = cities.countryid

你得到记录:

name        countryname
------      -----------
Boston      Amurika
New York    Amurika
Boise       Amurika

您会注意到“Amurika”只存储在一个地方,如果您更新一次:

UPDATE countries SET countryname="America" where id=1

你现在得到:

name        countryname
------      -----------
Boston      America
New York    America
Boise       America