左表中所有行的MySql join语句
假设我有三个表:左表中所有行的MySql join语句,mysql,sql,select,join,left-join,Mysql,Sql,Select,Join,Left Join,假设我有三个表: 1. Fields ID NAME 2. DATA ID f_id p_id data 3. PROJECT ID 每次我都需要从fields表中选择数据不同的所有行(取决于我需要的项目) 所以每次我都会有所有的字段行,如果项目X没有某个字段的数据,它将返回空行 我尝试了以下SQL语句: SELECT * FROM field as f left data as d on f.ID = d.f_id WHERE d.p_id = 'X' 这将只返回project X有
1. Fields
ID
NAME
2. DATA
ID
f_id
p_id
data
3. PROJECT
ID
每次我都需要从fields表中选择数据不同的所有行(取决于我需要的项目)
所以每次我都会有所有的字段行,如果项目X没有某个字段的数据,它将返回空行
我尝试了以下SQL语句:
SELECT * FROM field as f
left data as d on f.ID = d.f_id
WHERE d.p_id = 'X'
这将只返回project 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
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)
这将返回字段中的所有行,但也将返回其他项目数据,如果我要添加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
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 *
FROM Fields AS F LEFT JOIN DATA AS D ON
F.ID=D.ID LEFT JOIN PROJECT AS P ON F.ID=P.ID
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"
我很抱歉,但在我看来,问题可能是解决办法。为什么要选择空行?你是指列还是行?好的,让我想想,首先我会这样做:
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"
我很抱歉,但在我看来,问题可能是解决办法。为什么要选择空行?你指的是列还是行?可怕的表名、字段和数据…仅用于示例,而不是真正的名称@jarlh可怕的表名、字段和数据…仅用于示例,不是真名@jarlh请用你的答案解释一下。用你的答案解释一下。用你的答案解释一下。用你的答案解释一下。