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