gpt4 book ai didi

sql - 忽略 select 语句中的空值

转载 作者:行者123 更新时间:2023-11-29 14:21:48 26 4
gpt4 key购买 nike

我正在尝试通过我的 computer_system 检索组件列表,但是如果计算机系统的显卡设置为空(即它有板载),我的选择语句不会返回该行。

我一直在尝试使用 COALESCE,但没有结果。我还尝试在我的 WHERE 子句中使用 and OR,然后它只返回我的计算机系统以及各种不同类型的显卡。

相关代码:

SELECT
computer_system.cs_id,
computer_system.cs_name,
motherboard.name,
motherboard.price,
cpu.name,
cpu.price,
gfx.name,
gfx.price
FROM
public.computer_case ,
public.computer_system,
public.cpu,
public.gfx,
public.motherboard,
public.ram
WHERE
computer_system.cs_ram = ram.ram_id AND
computer_system.cs_cpu = cpu.cpu_id AND
computer_system.cs_mb = motherboard.mb_id AND
computer_system.cs_case = computer_case.case_id AND
computer_system.cs_gfx = gfx.gfx_id; <-- ( OR computer_system.cs_gfx IS NULL)

返回:

1;"Computer1";"Fractal Design"; 721.00; "MSI Z87"; 982.00; "Core i7 I7-4770K "; 2147.00; "Crucial Gamer"; 1253.00; "ASUS GTX780";3328.00

我应该使用联接吗?没有简单的方法可以说返回请求的行,即使有一个该死的 NULL 值。已经为此苦苦挣扎了至少 2 个小时。

如果需要,将张贴表格。

编辑:它应该返回第二行:

2;"Computer2";"Fractal Design"; 721.00; "MSI Z87"; 982.00; "Core i7 I7-4770K "; 2147.00; "Crucial Gamer"; 1253.00; "null/nothing";null/nothing

最佳答案

你想要一个LEFT OUTER JOIN

首先,清理您的代码,以便使用 ANSI 连接使其可读:

SELECT
computer_system.cs_id,
computer_system.cs_name,
motherboard.name,
motherboard.price,
cpu.name,
cpu.price,
gfx.name,
gfx.price
FROM
public.computer_system
INNER JOIN public.computer_case ON computer_system.cs_case = computer_case.case_id
INNER JOIN public.cpu ON computer_system.cs_cpu = cpu.cpu_id
INNER JOIN public.gfx ON computer_system.cs_gfx = gfx.gfx_id
INNER JOIN public.motherboard ON computer_system.cs_mb = motherboard.mb_id
INNER JOIN public.ram ON computer_system.cs_ram = ram.ram_id;

然后将 public.gfx 上的 INNER JOIN 更改为 LEFT OUTER JOIN:

    LEFT OUTER JOIN public.gfx ON computer_system.cs_gfx = gfx.gfx_id

参见 PostgreSQL tutorial - joins .

我强烈建议阅读 SQL 入门教程 - 至少是 PostgreSQL 教程,最好还有更多资料。

关于sql - 忽略 select 语句中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22559611/

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