gpt4 book ai didi

mysql - 使用 SQL 中的公共(public)键连接两个表/将列添加到原始表

转载 作者:行者123 更新时间:2023-11-29 01:55:55 24 4
gpt4 key购买 nike

我敢肯定这很简单,但谷歌搜索它提出了如何在没有公共(public) key 的情况下做到这一点。我有一个充满公共(public)键的列(在本例中为 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

我想最终得到一张看起来像这样的 table

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 (using the "multi-table" syntax described in the documentation):

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;

另一种解决方案是将两个表保持原样并创建一个查询它们的 View :

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 通过查询其他表来创建一个新表(在 View 中使用相同的 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

关于mysql - 使用 SQL 中的公共(public)键连接两个表/将列添加到原始表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29459001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com