我希望我能够清楚地解释我的问题。
我想要的是,如果我的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的“无值”。
有可能吗?
感谢。
答案 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