gpt4 book ai didi

mysql - 如何使三列成为我的主键

转载 作者:可可西里 更新时间:2023-11-01 07:20:34 24 4
gpt4 key购买 nike

我正在尝试学习如何将两个文件匹配在一起。但我现在已经尝试了 5 个小时的一切......但仍然不知道该怎么做。

第一个文件(600.000 行)包含 4 列:

Postal, Number, Houseletter, livingspace

第二个文件(7.000 行)包含 4 列:

Postal, Number, Houseletter, Furniturevalue

在我的第一个文件中,我有一个大区域的所有生活空间,在我的第二个文件中,我有那个大区域中几个地址的家具值。

我想将文件 1 中的生活空间添加到我的第二个文件中的地址。

所以我将文件导入数据库。

Table first file -> Space
Table second file -> Furniture

现在我正在尝试为表创建主键:

Primary key --> Postal, Number, Houseletter

但这行不通,因为只有在 Postal+Number+Houseletter 时,列才唯一,但不能彼此分开。

有人知道下一步吗?我需要做什么才能使此查询正常工作:

SELECT postal, number, houseletter, furniturevalue, livingspace
FROM space, furniture
WHERE ( space.postal = furniture.postal
AND space.number = furniture.number
AND space.houseletter = furniture.houseletter)

我试图用这个查询创建一个新 View ,包含“邮政、号码、房屋信件、家具值(value)、生活空间”所以来自两个表的数据。但首先我需要解决我的主键问题。

感谢您的帮助!

ps: 我在 phpmyadmin 中使用 sql

最佳答案

ALTER TABLE space ADD PRIMARY KEY(Postal, Number, Houseletter);

如果主键已经存在那么你想这样做:

ALTER TABLE space DROP PRIMARY KEY, ADD PRIMARY KEY(Postal, Number, Houseletter);

如果你有重复的 PK,你可以试试这个:

ALTER IGNORE TABLE space ADD UNIQUE INDEX idx_name (Postal, Number, Houseletter );

这将删除所有重复的行。作为一个额外的好处, future 重复的 INSERT 将出错。与往常一样,您可能希望在运行此类操作之前进行备份

第二个问题,你的查询应该是这样的:

SELECT postal, number, houseletter, furniturevalue, livingspace
FROM space INNER JOIN furniture
ON ( space.postal = furniture.postal
AND space.number = furniture.number
AND space.houseletter = furniture.houseletter)

关于mysql - 如何使三列成为我的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15706765/

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