【发布时间】:2019-10-08 11:18:17
【问题描述】:
我试图为两个表(Receipt 和 ReceiptLine)编写查询,发现收据不包含任何行的数据损坏。我在谷歌驱动器上有一个数据库文件的 .bak,但不确定这里是否有人愿意努力帮助我:D
即编写查询以查找收据不包含的数据损坏 任何行。 (提示:使用 Receipt 和 ReceiptLine 表)。 -- 返回 UniqReceipt 和 ReferNumber 列。
我需要返回“UniqReceipt”和“ReferNumber”列。
Receipt表的主键好像是'UniqReceipt'列,ReceiptLine的主键是'UniqReceiptLine'列,外键是'UniqReceipt'参考 Receipt 表中的“UniqReceipt”列
我最终想出了这个:
SELECT r.UniqReceipt, r.ReferNumber
FROM Receipt r
INNER JOIN ReceiptLine l ON r.UniqReceipt = l.UniqReceipt
WHERE datalength(l.ReceiptLineNumber) = 0 OR ReceiptLineNumber = '-1' OR ReceiptLineNumber IS NULL
有谁知道这是否是实现此功能的最佳方式?我基本上查看了 ReceiptLineNumber 何时为空或 NULL 或“-1”(我们使用 -1 而不是 NULL)并在两个表中的 UniqReceipt = UniqReceipt 时加入。
我不确定使用变量或某些打印语句是否会更好地检查数据损坏。
【问题讨论】:
标签: sql sql-server database join ssms