我有 names_table 這個表結構:
| 姓名 | 年齡 | 性別 |
|---|---|---|
| 某人1 | 25 | 男性 |
| 某人2 | 25 | 女性 |
另一個表 names_with_company 有這樣的結構:
| 公司編號 | 姓名 | 年齡 | 性別 |
|---|
現在,我想通過將單個值添加到 CompanyID 列來復制 names_table 中的資料。
預期結果:
| 公司編號 | 姓名 | 年齡 | 性別 |
|---|---|---|---|
| 1234 | 某人1 | 25 | 男性 |
| 1234 | 某人2 | 25 | 女性 |
我很困惑我應該包括什么。
INSERT INTO names_with_company
'1234',SELECT * FROM names_table
要么
INSERT INTO names_with_company
SELECT * FROM (
'1234'
UNION
SELECT * FROM names_table
)
這兩個不行
我知道這兩個表是兩個不同的結構,但是有沒有辦法在列中具有靜態值,而其他表中的其余資料呢?
另外,你能不建議創建另一個表并加入它們嗎?我更喜歡使用上面的代碼行來完成它,但有一個作業邏輯。
uj5u.com熱心網友回復:
養成始終指定列名的習慣:
INSERT INTO names_with_company (CompanyID, Name, Age, Gender)
SELECT 1234, Name, Age, Gender
FROM names_table;
如您所見,您可以為任何列提供“文字”值。
uj5u.com熱心網友回復:
您無法插入,因為您的第一個查詢
INSERT INTO names_with_company
'1234',SELECT * FROM names_table
是完全錯誤的,但如果你像下面這樣寫
INSERT INTO names_with_company
SELECT '1234',name,age,gender FROM names_table
它會起作用,但最好明確提及@stu在另一個答案中給出的列名
您的第二個查詢也是聯合操作的錯誤原因您必須為所有選擇提供相同數量的列
INSERT INTO names_with_company
SELECT * FROM (
'1234'
UNION
SELECT * FROM names_table
)
但是您只使用了一種選擇
聯合操作的寫入方法如下
select col1,col2 from table1
union
select col1,col2 from table2
那么你可以以任何其他方式使用它
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/430022.html
上一篇:MySQL列年份決議和排序
