mysql存储过程的两条语句,其中iIP ,iUV  ,iPV 是变量,当我执行时出现这个错误Incorrect usage of UNION and INTO,请问帅哥们怎么解决啊,谢谢。SELECT COUNT(DISTINCT vistor_ip) INTO iIP FROM temp_main_logs_ex1 WHERE web_id=WebId AND login_date=loginDate  AND  visitor_url=VisitorUrl UNION
 SELECT COUNT(VALUE) INTO iUV  FROM temp_table1 UNION 
 SELECT COUNT(log_id) INTO iPV FROM temp_main_logs_ex1 a,temp_table1 b FORCE INDEX (temp_table1_value) WHERE  web_id=WebId AND a.session_id=b.value AND login_date=loginDate;

解决方案 »

  1.   

    try:
    SELECT SUM(IF(bz=1,1,0)),SUM(IF(bz=2,1,0)),
    SUM(IF(bz=3,1,0))
    INTO iIP,iUV,iPV FROM (
    SELECT DISTINCT 1 AS bz ,vistor_ip FROM temp_main_logs_ex1 WHERE web_id=WebId AND login_date=loginDate AND visitor_url=VisitorUrl UNION
    SELECT 2,VALUE FROM temp_table1 UNION  
    SELECT 3,log_id FROM temp_main_logs_ex1 a,temp_table1 b FORCE INDEX (temp_table1_value) WHERE web_id=WebId AND a.session_id=b.value AND login_date=loginDate) a;
      

  2.   

    select v1 INTO iIP ,v2 INTO iUV ,v2 INTO iPV 
    from (
    SELECT COUNT(DISTINCT vistor_ip) as v1 
    FROM temp_main_logs_ex1 
    WHERE web_id=WebId AND login_date=loginDate  AND  visitor_url=VisitorUrl 
    ) a, (
    SELECT COUNT(VALUE)  as v2  FROM temp_table1 
    ) b, (
    SELECT COUNT(log_id)  as v3 FROM temp_main_logs_ex1 a,temp_table1 b FORCE INDEX (temp_table1_value) 
    WHERE  web_id=WebId AND a.session_id=b.value AND login_date=loginDate
    ) c ;
      

  3.   

    SELECT COUNT(log_id),(SELECT COUNT(DISTINCT vistor_ip) FROM temp_main_logs_ex1 WHERE web_id=WebId AND login_date=loginDate AND visitor_url=VisitorUrl),( SELECT COUNT(VALUE)  FROM temp_table1) INTO iPV,iIP,iUV FROM temp_main_logs_ex1 a,temp_table1 b FORCE INDEX (temp_table1_value) WHERE web_id=WebId AND a.session_id=b.value AND login_date=loginDate;
      

  4.   

    union 的时候,两表的字段要一致