2017-06-01 58 views
0

是否可以在CASE中使用count,这里是我的查询。给我一个错误#1111使用COUNT的Mysql insde CASE

SELECT t1.id,t1.name,t1.date_entered,t1.date_modified, t1.adresse,t1.adresse_state,t1.adresse_city,t1.adresse_postalcode,t1.hausnummer,t1.center_lat,t1.center_long, t3.name as street_name,t3.strasse,t3.primaerstr 
FROM hi_haus as t1 
LEFT JOIN hi_haus_hi_strasse as t2 ON (t2.hi_haus_id = t1.id) 
LEFT JOIN hi_strasse as t3 ON (t3.id = t2.hi_strasse_id) 
WHERE t1.adresse !='' AND t1.adresse IS NOT NULL AND t1.adresse NOT LIKE '%bau%' AND t1.id IN ('58e722d6-44f5-4e24-8861-5cd4a6f07cbc','4d0a79ee-decf-49b1-8b4b-a912b278ffec') 
AND t3.primaerstr = 
CASE 
WHEN count(t1.id) > '1' THEN t3.primaerstr='0' 
ELSE 
t3.primaerstr = '1' 
END 
GROUP BY t1.id 

我需要做的是让primaerstr“0”,如果ID被重复多次。

+0

您只能选择分组的那些列。在这种情况下,你是由t1.id分组,并选择t1.name,t1.date等 –

+0

我也选择t1.id,查询如果我不使用CASE,并具体使用计数的情况下 –

+0

无论内容如何,​​您是基于连接还是正好计算表? – maSTAShuFu

回答

0

SELECT t1.id,t1.name,t1.date_entered,t1.date_modified,t1.adresse,t1.adresse_state,t1.adresse_city,t1.adresse_postalcode,T1。 hausnummer,t1.center_lat,t1.center_long,t3.name as street_name,t3.id,t3.strasse,t3.primaerstr FROM hi_haus as t1 LEFT JOIN hi_haus_hi_strasse as t2 ON(t2.hi_haus_id = t1.id)LEFT JOIN hi_strasse as t3 ON(t3.id = t2.hi_strasse_id)WHERE t1.adresse!=''AND t1.adresse IS NOT NULL AND t1.adresse NOT LIKE'%bau%'AND t1.id IN('58e722d6-44f5-4e24- 8861-5cd4a6f07cbc','5d492f56-c26e-4c03-b3ec-e1d9b0c6f060','fc87b46a-5fe8-4ed0-b3f4-f6fbb0d6919d')AND t3.primaerstr!=(CASE WHEN(SELE CT COUNT(hi_haus_id)FROM hi_haus_hi_strasse WHERE hi_haus_id = t1.id)> 1 THEN 1 ELSE''END)ORDER BY t1.id,t1.date_modified DESC LIMIT 30;

0

试试这个

SELECT t1.id , t1.name , t1.date_entered , t1.date_modified , t1.adresse , t1.adresse_state , t1.adresse_city , t1.adresse_postalcode , t1.hausnummer , t1.center_lat , t1.center_long , t3.name AS street_name , t3.strasse , t3.primaerstr FROM hi_haus AS t1 , (SELECT id , COUNT(*) AS count FROM hi_haus GROUP BY id ) AS subquery LEFT JOIN hi_haus_hi_strasse AS t2 ON (t2.hi_haus_id = t1.id) LEFT JOIN hi_strasse AS t3 ON (t3.id = t2.hi_strasse_id) WHERE t1.adresse != '' AND t1.adresse IS NOT NULL AND t1.adresse NOT LIKE '%bau%' AND t1.id IN ('58e722d6-44f5-4e24-8861-5cd4a6f07cbc', '4d0a79ee-decf-49b1-8b4b-a912b278ffec') AND ((t3.primaerstr = 0 AND t1.id = subquery.id AND subquery.count > 1) OR (t3.primaerstr = 1 AND t1.id = subquery.id AND subquery.count = 0) ) GROUP BY t1.id

+0

感谢您的帮助Abhijith,但仍然错误#1054 –

+0

#1054是未知列。检查是否有任何列拼写错误。对不起,在这里不能舀汤 –

+0

好吧,我已经检查过是否有拼写错误。但不幸的是,事实并非如此。我在加入的基础上计数ID,我认为这可能是问题。但再次感谢 –