在SQL Query中不满足一个条件时,是否可以显示空字段值而不是隐藏整行

时间:2014-11-05 21:55:29

标签: mysql sql conditional-statements

我希望我能够清楚地解释我的问题。

我想要的是,如果我的table1.id = table4.id中的一个AND条件未满足,我仍然想要显示该行,但我想在结果中将table4.field显示为“No Value”。 / p>

因此,如果我有一个SQL查询: -

SELECT table1.field, table2.field, table3.field, table4.field
FROM table1, table2, table3, table4
WHERE table1.id = table2.id AND table2.id = table3.id AND table1.id = table4.id

现在只针对table1.id = table4.id条件,我希望这不是自信的。如果满足这个ID,那么很好,但如果没有,那么不要隐藏行,但显示行(和其他字段),只显示table4.field的“无值”。

有可能吗?

感谢。

1 个答案:

答案 0 :(得分:3)

使用left join

也使用显式连接语法

SELECT table1.field, table2.field, table3.field, IFNULL(table4.field, 'No Value')
FROM table1
JOIN table2  
ON table1.id = table2.id
JOIN table3
ON table2.id = table3.id
LEFT JOIN table4
ON table1.id = table4.id

编辑:

根据您的表格结构

SELECT
 IFNULL(f.field_full_name_value, 'No Value'), u.name, u.uid, n.title, n.nid, a.timestamp, d.field_video_duration_value AS duration
FROM
db_node_view_count a
join db_node n
ON a.nid = n.nid
JOIN db_field_data_field_video_duration d
ON n.nid = d.entity_id
JOIN db_users u
ON a.uid = u.uid
AND u.uid <> 1
LEFT JOIN db_field_data_field_full_name f 
ON u.uid = f.entity_id
ORDER BY u.uid desc