gpt4 book ai didi

sql - 如何让一行始终显示(使用一个 View )

转载 作者:行者123 更新时间:2023-12-02 08:28:12 26 4
gpt4 key购买 nike

我有以下(大大简化的) View :

SELECT        T1.item, T2.text
FROM T1 LEFT OUTER JOIN
T2 ON T1.code = T2.code AND T1.item = T2.item
WHERE (T1.item = '12345') AND (T1.code = '678') AND (T2.detailID = '99')

T1

╔═══════╦═══════╦═══════════════╗
║ code ║ item ║ other info... ║
╠═══════╬═══════╬═══════════════╣
║ code1 ║ item1 ║ other info... ║
║ code2 ║ item2 ║ other info... ║
╚═══════╩═══════╩═══════════════╝

T2

╔═══════╦═══════╦═══════════╦═══════╦═══════════════╗
║ code ║ item ║ detailID ║ text ║ other info ║
╠═══════╬═══════╬═══════════╬═══════╬═══════════════╣
║ code1 ║ item1 ║ detailID1 ║ text1 ║ other info... ║
║ code1 ║ item1 ║ detailID2 ║ text2 ║ other info... ║
║ code1 ║ item1 ║ detailID3 ║ text3 ║ other info... ║
║ code2 ║ item2 ║ detailID1 ║ text4 ║ other info... ║
╚═══════╩═══════╩═══════════╩═══════╩═══════════════╝

注意:detailID 在多个代码/项目上重复使用

在大多数情况下,这工作正常。除了在某些情况下,detailID 99 对于代码和项目而言是不存在的。当发生这种情况时,它返回 0 行(我认为 LEFT OUTER JOIN 可以解决这个问题,但我的 SQL 非常业余)。我怎样才能让它返回一行,但只有

12345, ''

作为该实例的结果?

最佳答案

您需要将第二个表上的条件移动到on 子句:

SELECT T1.item, T2.text
FROM T1 LEFT OUTER JOIN
T2
ON T1.code = T2.code AND T1.item = T2.item AND T2.detailID = '99'
WHERE (T1.item = '12345') AND (T1.code = '678') ;

当没有匹配项时,该值为 NULL 并且您的原始 where 子句将其过滤掉。

关于sql - 如何让一行始终显示(使用一个 View ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30121906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com