2013-07-16 175 views
0

,我在一个SQL查询中面临的一个小问题,mysql条件语句?

这里是查询

SELECT events.event_id, 
(SELECT favorite_events.event_id, 
     (CASE favorite_events.event_id WHEN NULL THEN 0 ELSE 1 END) 
     FROM favorite_events 
     WHERE favorite_events.event_id = events.event_id 
) AS is_favorite 
FROM events 
WHERE start_date = 2013-07-16 

它给我“操作数应包含1列(S) ”的错误,请帮忙!

+0

不要这样做。使用JOIN。 – Barmar

+0

我出于好奇而问这个问题 - 你也许是谷歌错误'操作数应该包含1列'? –

+0

是的,我试过了,有很多像这样的查询,但我无法找到如下的确切答案! –

回答

2

使用JOIN,而不是相关的子查询。

SELECT e.event_id, 
     f.event_id IS NOT NULL AS is_favorite 
FROM events e 
LEFT JOIN favorite_events f 
ON f.event_id = e.event_id 
WHERE e.start_date = '2013-07-16' 
+0

谢谢! 这是双重帮助! –

2

在子查询中,您选择了2列。您不能将2 colums重命名为is_favorite

我假设,通过查看查询,您可能不需要字段favorite_events.event_id。只要删除那部分。