[英]MySQL - Populate table column with values from another table
需要一些幫助。 創建一個基本的關系數據庫並嘗試將我的帳戶表中的列值添加到我的登錄表中。 但是,有點堅持如何實現這一目標。 我正在嘗試使用 AccountID、Username、Sign_in 數據來填充 Login 表,但執行時沒有出現任何內容。 我的代碼:
CREATE TABLE IF NOT EXISTS Account
(
AccountID int NOT NULL AUTO_INCREMENT,
Title VARCHAR(64) NOT NULL,
FirstName varchar(16) NOT NULL,
LastName varchar(32) NOT NULL,
DOB DATE,
Email VARCHAR(255),
Username varchar(32) UNIQUE NOT NULL,
Sign_in varchar(32) UNIQUE NOT NULL,
PRIMARY KEY (AccountID)
);
ALTER TABLE Account AUTO_INCREMENT=1;
CREATE TABLE IF NOT EXISTS Login
(
LoginID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
AccountID INT NOT NULL,
Username varchar(32) NOT NULL,
Sign_in varchar(32) NOT NULL,
LoginDate TIMESTAMP(6),
FOREIGN KEY (AccountID) REFERENCES Account(AccountID),
FOREIGN KEY (Username) REFERENCES Account(Username),
FOREIGN KEY (Sign_in) REFERENCES Account(Sign_in)
);
ALTER TABLE Login AUTO_INCREMENT=100;
並嘗試了查詢(根據此論壇上的類似查詢編輯)無濟於事
INSERT INTO Login
(
AccountID,
Username,
Sign_in
)
SELECT
a.AccountID, a.Username, a.Sign_in
FROM Account a
INNER JOIN Login
ON a.AccountID = l.AccountID;
Select * from Login;
幫助/建議表示贊賞。
您錯過了關系數據庫的重點。 您只需要將 map 改為主鍵,然后查找其他值。 您不想將值存儲在兩個地方。
所以:
CREATE TABLE IF NOT EXISTS Account (
AccountID int AUTO_INCREMENT PRIMARY KEY,
Title VARCHAR(64) NOT NULL,
FirstName varchar(16) NOT NULL,
LastName varchar(32) NOT NULL,
DOB DATE,
Email VARCHAR(255),
Username varchar(32) UNIQUE NOT NULL,
Sign_in varchar(32) UNIQUE NOT NULL
);
CREATE TABLE IF NOT EXISTS Login (
LoginID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
AccountID INT NOT NULL,
LoginDate TIMESTAMP(6),
FOREIGN KEY (AccountID) REFERENCES Account(AccountID)
);
然后,如果您想要username
或sign_in
,您可以使用JOIN
來查找該信息。
我看不出設置自動增量值的理由。 讓它們在所有表中從1
開始通常沒有問題。
設法解決了...
INSERT INTO Login (AccountID, Username, Sign_in)
SELECT AccountID, Username, Sign_in
FROM Account;
不過,確實接受了有關主鍵 ID 建議的建議。 干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.