首页 > 解决方案 > 使用 JOIN 添加较小的表

问题描述

我遇到了一种情况,我必须进行查询,从几个表中选择内容,我对 3 个表没有问题,我必须生成如下所示的内容。

+------------+----------+----------+-----------+------------+
| Access ID  |  Client  |  Seller  |  Manager  |  Function  |
+------------+----------+----------+-----------+------------+

我的代码JOIN是:

SELECT BO.accessid, BO.client, BO.seller_name, BO2.manager, CM3.func FROM BO
JOIN BO2 ON BO2.bo2stamp = BO.bostamp
JOIN CM3 ON CM3.seller_number = BO.seller_number

现在我想添加表u_numbers,但是当我添加JOIN u_numbers n ON n.bostamp = BO.bostamp 查询结果时,我的查询结果从 49 行降低到了 26 行。

其他每个表都有大约 20 列,但该u_numbers表只有 5 列,行数要少得多,但即便如此我认为当我添加这个表时,查询返回的行数会和这个一样,但是该表有 38 行。

表结构u_numbers

+-----------------+-----------+----------+---------+---------------+
| u_numbersstamp  |  bostamp  |  number  |  order  |  Portability  |
+-----------------+-----------+----------+---------+---------------+

我使用此查询的目标是在查询中为每个数字添加一行 where order <> 1,为此我尝试了

CASE WHEN n.order <> 1 THEN n.number ELSE bo.accessid END

这段代码有效,所以如果我能让查询显示完整的行,那么我会正确地得到它。我也在(NOLOCK)每张桌子上都有,然后我试图删除它,看看它是否改变了任何东西,但它没有。

标签: sqlsql-serverjoin

解决方案


推荐阅读