gpt4 book ai didi

MySql join 语句与左表中的所有行

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

假设我有三个表:

1. Fields
ID
NAME

2. DATA
ID
f_id
p_id
data

3. PROJECT
ID

我需要每次使用不同的数据从字段表中选择所有行(取决于我需要什么项目)因此,每次我都会拥有所有字段行,如果项目 X 没有某些字段的数据,它将返回空行。

我尝试了以下 SQL 语句:

SELECT * FROM field as f 
left data as d on f.ID = d.f_id
WHERE d.p_id = 'X'

这将仅返回投影 X 有一些数据的行,如果没有数据则不会返回空行。

我也尝试过:

SELECT * FROM field as f 
left join data as d on f.ID = d.f_id
left join project as p on p.ID = d.p_id

这将返回字段中的所有行,但也会返回其他项目数据,如果我添加Where语句,如果项目没有数据,它不会返回空行。

我也尝试过:

SELECT * FROM field as f 
left join data as d on f.ID = d.f_id
left join project as p on p.ID = d.p_id
WHERE (p.ID == 'x' || p.ID is null)

但是,仅当其他项目未使用这些行,并且存在其他项目使用它的字段时,此返回字段行,所以我不会获得该字段。 (没有从左表中获取所有行)

如果项目没有数据,我怎样才能从左表(字段)中选择所有行?

最佳答案

好吧,让我想想,首先我会这样做:

    SELECT F.* FROM field F 
LEFT data D ON F.id = D.f_id
WHERE D.p_id = 'X';

因为你说你只想要表字段中的数据,对吗?如果您将 * 留在那里而不带表前缀,它将为您提供连接上每个表上的所有数据,并且由于每个表上的列 ID,您可能会遇到不明确的错误。

另一件事,我去掉了 AS,因为它通常更适合在列名上放置别名,例如:

    "COUNT(ID) AS COUNTER"

很抱歉,但在我看来,问题可能就是解决方案。为什么要选择空行?你指的是列还是行?

关于MySql join 语句与左表中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36445523/

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