Mysql 更新集=选择语句&;主要关键问题
我有一张桌子:Mysql 更新集=选择语句&;主要关键问题,mysql,sql,Mysql,Sql,我有一张桌子: TRADESHOW id name industry 其中行业当前列为行业的文本名称(软件、硬件、网络等)。我正在考虑将行业移动到一个单独的表中,这似乎是一个更好的设计,并且使数据更加一致,使我的应用程序更容易添加或编辑不同的行业。新的表格将是: INDUSTRY id name 而TRADESHOW.industry将成为TRADESHOW.industry\u id 我的问题是: 这种变化有意义吗?IND在此处输入代码USTRY表是否应该有一个代理键(INDUSTRY.i
TRADESHOW
id
name
industry
其中行业当前列为行业的文本名称(软件、硬件、网络等)。我正在考虑将行业移动到一个单独的表中,这似乎是一个更好的设计,并且使数据更加一致,使我的应用程序更容易添加或编辑不同的行业。新的表格将是:
INDUSTRY
id
name
而TRADESHOW.industry将成为TRADESHOW.industry\u id
我的问题是:
在此处输入代码
USTRY表是否应该有一个代理键(INDUSTRY.id
),或者INDUSTRY.name的一列作为主键是否更有意义
行业
表之后,形成更新语句以修复贸易展
表的最佳方式是什么?我想我需要一个带有SELECT
语句的UPDATE
?假设在行业中保留代理密钥是有意义的,我会这样想:这样行吗?(我知道这并不完美,因为现在的行业名称并非100%一致。)有更好的方法吗?谢谢 如果在TradeShow中针对同一Id、名称有多个行业,则选择不同的行业表是有意义的。如果您决定为行业单独设置一个表,我建议在贸易展表中使用行业Id而不是行业名称
TradeShow
Id
Name
IndustryId
Industry
Id
Name
记住这一点,您的更新语句将
Update TradeShow
Set Tradeshow.IndustryId = (Select Id From Industry where Name = 'abs')
Where TradeShow.Id = 12
其中Industry.Name和TradeShow.Id是输入
ALTER to add tradeshow.industry_id
UPDATE tradeshow SET tradeshow.industry_id =
(SELECT id FROM industry WHERE tradeshow.industry=industry.name)
ALTER to remove tradeshow.industry
UPDATE appm_personnel SET appm_personnel.`PASSWORD`=(
SELECT authorise.authorise_pass
FROM authorise
WHERE authorise.authorise_idcard = appm_personnel.ID_CODE LIMIT 1 )
WHERE LENGTH(appm_personnel.ID_CODE)=13
UPDATE appm_personnel SET appm_personnel.`PASSWORD`=(
SELECT authorise.authorise_pass
FROM authorise
WHERE authorise.authorise_idcard = appm_personnel.ID_CODE LIMIT 1 )
WHERE LENGTH(appm_personnel.ID_CODE)=13