![](/img/trans.png)
[英]Two different values from same column as seperate columns return same results
[英]How to query two from two seperate datatables with different values
我將如何查詢以下內容?
User.name and Groups.description,
from the User table and Groups table,
where User.id_user = User_Group.id_user, and Groups.id_groups = User_Group.id_groups
我了解了UNION
和Join
,但是UNION
要求表具有相同數量的列,而JOIN
似乎僅適用於2個表? 是否可以結合UNION
和Join
?
SELECT User.Name
FROM User
FULL JOIN User_Groups
ON User.Id_user= User_Groups.Id_user
UNION
SELECT Group.Description
FROM Group
FULL JOIN User_Groups
ON Group.Id_group= Groups.Id_group
上面的代碼正確嗎?
試試這個簡化的查詢:
SELECT u.Name
FROM User u
JOIN User_Groups USING (Id_user)
UNION ALL
SELECT g.Description
FROM Group g
JOIN User_Groups USING (Id_group)
使用UNION ALL
而不是UNION
,因為UNION
會消除具有相同值的任何行。
一個UNION
的結果只有一個標題,列名取自查詢中的第一個SELECT
。 因此,在您的情況下,列名稱將為“名稱”。
當連接列共享相同的名稱並且僅在連接的左側和右側出現一次時, USING
只是ON
的語法簡化。
表別名User AS u
或只是User u
簡化了代碼中的后續引用。
您可以根據需要JOIN
任意多個表,但不限於兩個表。 我懷疑,您真正想要的是:
SELECT u.Name, g.Description
FROM User u
JOIN User_Groups USING (Id_user)
JOIN Group g USING (Id_group)
我認為也可以嘗試加入。
SELECT u.name, g.description FROM User u, Groups g, User_Group ug, Groups.id gi
WHERE u.id_user=g.id_user and g.id_groups=ug.id_groups;
嘗試:
SELECT User.Name, Groups.Description
FROM User
JOIN User_Group on User.id_user = User_Group.id_user
JOIN Groups on Groups.id_groups = User_Group.id_groups
要么
SELECT User.Name, Groups.Description
FROM User
JOIN User_Group USING (id_user)
JOIN Groups USING (id_groups)
不確定為什么要使用該union
嗎? (除非您想要1列-您未指定)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.