Tsql SQL Server 2012中的联接表查询
我有两张表,如下所示:Tsql SQL Server 2012中的联接表查询,tsql,sql-server-2012,Tsql,Sql Server 2012,我有两张表,如下所示: TableA --> categoryId(pk), categoryParentId, catName TableB --> empId(pk), categoryId, empName, empDesignation 我想从TableA中获取所有catName及其各自的categoryId,其中TableB的categoryId=2等于TableA的categoryParentId=2。请帮忙 结果: 1002 SE 1003 MD 这应该能
TableA --> categoryId(pk), categoryParentId, catName
TableB --> empId(pk), categoryId, empName, empDesignation
我想从TableA
中获取所有catName
及其各自的categoryId,其中TableB
的categoryId=2
等于TableA的categoryParentId=2
。请帮忙
结果:
1002 SE
1003 MD
这应该能奏效
SELECT tableA.catName
FROM tableA, tableB
WHERE tableB.categoryId = table1.categoryParentId
AND tableB.categoryId = 2;
如果需要唯一的CATName,可以使用
SELECT distinct tableA.catName
FROM tableA, tableB
WHERE tableB.categoryId = table1.categoryParentId
AND tableB.categoryId = 2;
像这样的
SELECT DISTINCT catName FROM TABLEA WHERE categoryParentId IN (SELECT DISTINCT categoryID from TABLEB);
带有内部联接的解决方案
:
select TableA.catName
from TableA
inner join TableB on TableA.categoryParentId = TableB.categoryId
建议使用内部联接
来联接表(与从表A、表B中选择…
相反)
见:
(这个问题实际上是关于MySql的,但答案说SQL Server也是如此)
回答您的评论(我假设您想要表A中的类别ID
):
我希望这个问题能满足你的需要
SELECT TABLEA.CATNAME AS CATEGORY
from TABLEB INNER JOIN TABLEA
ON TABLEA.CATEGORYPARENTID = TABLEB.CATEGORYID
另一种方法
SELECT
catname
from
tablea a INNER JOIN
tableb b ON
a.categoryParentID = b.categoryID
group by
catname
为了清楚起见,您能提供您希望结果集的外观吗?谢谢您的代码。我想在查询中做些小更改,即tableB的categoryId为2,并选择catName以及相应的categoryId。对于tableB的categoryId等于2,并选择catName以及相应的categoryId。我想tableB的categoryId等于2,并选择catName以及相应的categoryId。
SELECT
catname
from
tablea a INNER JOIN
tableb b ON
a.categoryParentID = b.categoryID
group by
catname