【发布时间】:2020-09-19 22:53:18
【问题描述】:
我有 3 个表格,预算、收入和费用。
预算表:
收入表:
费用表:
这是我的 SQL 语句:
SELECT
Budgets.BudgetID, Budgets.BudgetName, Budgets.Username_FK,
Budgets.BudgetAmount, Budgets.SavePercentage,
Expenses.ExpensesID, Expenses.ExpensesAmount, Expenses.ExpensesCategory,
Income.IncomeID, Income.IncomeAmount, Income.IncomeCategory
FROM
Budgets
LEFT JOIN
Income ON Budgets.BudgetID = Income.BudgetID_FK
LEFT JOIN
Expenses ON Budgets.BudgetID = Expenses.BudgetID_FK
WHERE
BudgetName = '2019
结果如下:
根据我的 Income 表,只有 1 条记录与 BudgetID = 3 相关联,但在左连接中,它重复了。
理想情况下,我希望它在重复项上返回“null”。我该怎么做?
【问题讨论】:
-
数据图像确实不能帮助我们在这里为您提供帮助。请花时间以可消耗的格式提供样本数据;表格格式的
text或(甚至更好)DDL 和 DML 语句。 -
至于您的问题,您为什么不期望
BudgetID3 有4 行?它在Expenses表中有3行。 -
@Larnu 如果您查看 收入表,则只有 1 行与 BudgetID 3 相关联,但是,如果您查看 b>Left Join Results,返回3条额外记录。
-
由于相同预算 ID 的费用表中多了 3 行,您将获得 3 个额外结果
-
您的结果包括每个
ExpensesID的一行,这正是您的查询所要求的。这些不是重复的行。将ExpensesAmounts更改为四个不同的数字以更清楚地看到这一点。问题是,你想用这四个数字做什么?你的问题没有说清楚,所以到目前为止,每个人都只是在猜测你的意图。
标签: sql sql-server database left-join sql-server-2019