【发布时间】:2016-07-26 12:36:15
【问题描述】:
假设我有三个表:
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)
但是只有当这些行没有被其他项目使用时才会返回字段行,如果有其他项目使用它的字段,所以我不会得到这个字段。 (没有从左表中获取所有行)
如果项目没有数据,我怎样才能从左表(字段)中选择所有行?
【问题讨论】:
-
可怕的表名、字段和数据...
-
仅供示例,非实名@jarlh
标签: mysql sql select join left-join