![](/img/trans.png)
[英]How to make a join only on selected values of a column on another table in sql
[英]How to join a column of same values to another different table in SQL?
我有這個 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
)
這兩個不行
我知道這兩個表是兩種不同的結構,但是有沒有辦法在列中有一個 static 值,而另一個表中的數據有 rest?
另外,您能否不建議創建另一個表並加入它們? 我更喜歡使用上面的代碼行來完成它,但要有一個工作邏輯。
養成總是指定列名的習慣:
INSERT INTO names_with_company (CompanyID, Name, Age, Gender)
SELECT 1234, Name, Age, Gender
FROM names_table;
如您所見,您可以為任何列提供“文字”值。
您無法插入,因為您的第一個查詢
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
聯合操作的寫入方法如下
select col1,col2 from table1
union
select col1,col2 from table2
然后你可以用任何其他方式使用它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.