我敢肯定这很简单,但是使用谷歌搜索就可以找到没有通用密钥的方法。我有一栏充满了公用密钥(在本例中为provider_num)
基本上,我的第一个表(称为“ s10”)如下所示:
provider_num | provider_name | state | phone_number`
10001 | johns creek | ga | 555-5555`
第二个是这样的(称为“ hs”)
provider_num | latitude | longitude | IDS_num
10001 | -89.0023 | -82.4729 | stn0021
我想用一张看起来像这样的桌子结束
provider_num | provider_name | state | phone_number | latitude | longitude | IDS_num
这可能吗?
到目前为止,我只写了一个像这样的简单插入
INSERT INTO s10
hs.latitude, hs.longitude, hs.IDS_num
where s10.provider_num = hs.provider_num
但是我想知道在运行它之前是否缺少某些东西,例如s10中的预定义列,等等。
提前致谢
您不能s10
在同一SQL语句中同时创建列和填充它们的值。首先,您需要ALTER TABLE
添加一个以添加列,然后使用UPDATE
(使用INNER JOIN
)来填充它们:
-- s10 already exists, but with limited columns
-- Add the other columns (use the correct data types - I just guessed here)
ALTER TABLE s10
ADD latitude DECIMAL(10,2) [NULL or other attrs],
ADD longitude DECIMAL(10,2) [NULL or other attrs],
ADD IDS_num VARCHAR(32);
添加相关列后,执行UPDATE
带有联接的(使用文档中描述的“多表”语法):
UPDATE s10 INNER JOIN hs ON s10.provider_num = hs.provider_num
SET
s10.latitude = hs.latitude,
s10.longitude = hs.longitude,
s10.IDS_num = hs.IDS_num;
另一种解决方案是将两个表保持原样,然后创建一个视图来查询两个表:
CREATE VIEW combined_tables AS (
SELECT
s10.provider_num,
provider_name,
state,
phone_number,
latitude,
longitude,
IDS_num
FROM
s10
INNER JOIN hs ON s10.provider_num = hs.provider_num
);
但是如果hs
仅包含由所标识的实体的其他属性provider_num
,则hs
通过将两者合并为来消除表是有意义的s10
。
还有另一种方法是CREATE TABLE AS SELECT
通过查询其他表来创建新表(SELECT
在视图中使用相同的表):
CREATE TABLE s10_combined AS
SELECT
s10.provider_num,
provider_name,
state,
phone_number,
latitude,
longitude,
IDS_num
FROM
s10
INNER JOIN hs ON s10.provider_num = hs.provider_num;
上面产生了一个新表s10_combined
,之后您可以删除其他两个表。考虑到所有这些方案虽然,我只想坚持与第一和执行ALTER
之后UPDATE
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句