在没有子查询的情况下从同一个表中拉两次列

时间:2011-08-29 20:09:31

标签: mysql sql

我使用以下查询(在PHP脚本中)

SELECT *,
(SELECT head FROM pages WHERE id='0') AS nullhead
FROM pages WHERE id='$id1' OR id='$id2'

它提取给定页面的数据,包括head列的值。但是,head列可以是NULL,在这种情况下,使用id = 0的值。

是否可以在第2行没有子查询的情况下执行此操作,同时仍然只使用一个查询?

2 个答案:

答案 0 :(得分:2)

你想在这里做一个自我加入(在这种情况下,是一个笛卡尔自我加入)

select a.*, b.head as nullhead
from pages a, pages b
where a.id in ( '$id1', '$id2' )
and b.id = '0'

答案 1 :(得分:1)

如果您想0 head NULL使用COALESCE

,请选择SELECT *, COALESCE(head, 0) FROM pages WHERE id='$id1' OR id='$id2'
{{1}}