我对SQL语言很陌生。我有两个表,比如table1和table2,table1有ID和Name列,table2有ID和Accounts列。我需要编写一个查询,显示所有具有相应帐号的唯一名称。基本的例子是:
table1 table2
ID Name ID Accounts
1 foo 1 2
2 bar 2 10
3 baz 3 4
4 foo 4 2
编辑:自己编造这张桌子。原始表中没有输入。
答案 0 :(得分:0)
您需要选择left join
和distinct
。所以,
SELECT DISTINCT A.Name
,B.Account
FROM TableA A
INNER JOIN TableB B
ON A.ID = B.ID
基本上,这样做需要TableA
和TableB
通信ID
并创建现在包含ID
,Name
和account number
(您可以通过*
更改选择中的列来查看它。
然后,distinct
删除重复的行,这就是您要查找的内容。
答案 1 :(得分:0)
mysql加入查询将是: -
select a.Id,a.Name,b.Id,b.Accounts from table1 a ,table2 where a.Id=b.Id
加入第一步: - 从两个表中选择字段名称。
加入第二步: - 比较基数&将要使用的通用字段名称 比较两个表中的数据。
a.Id = b。我会比较两个表格中的ID。
答案 2 :(得分:0)
试试这个:
SELECT table1.Name, table2.Accounts FROM table1 INNER JOIN table2 ON table1.ID=table2.ID;
这会在结果表格中为您提供Name
和Accounts
列。由于我们正在使用INNER JOIN
,因此我们只会获得两个表中都具有匹配值的记录。
您可以详细了解JOIN
here。
答案 3 :(得分:0)
这里的问题是' foo'是否与相应的重复帐户值重复,即使ID是不同的?我通常不相信"不同的"当使用多个列时。虽然可能不必要地复杂,但我会这样做:
with allnames as (
select
t1.name,
t2.accounts,
rank() over(partition by t1.name, t2.accounts order by rownum) DUPLICATE_RANK
from table1 t1
inner join table2 t2 on t1.ID = t2.ID
)
select
name,
accounts
from allnames
where DUPLICATE_RANK = 1
这将为您提供所有唯一的名称 - 帐户组合。