我这个语句执行就没响应了,请问哪里有问题??SELECT * FROM `sale_orders` T WHERE  `account`='PM_AC' AND 1=(select count(*) from `sale_orders` where `upload_date` LIKE '2013-07-28%' AND `recipient_name`=T.`recipient_name` AND `account`='PM_AC' AND `ship_address_1`=T.`ship_address_1`) AND `upload_date` LIKE '2013-07-28%' GROUP BY `number`,`recipient_name`,`ship_address_1`样例数据

解决方案 »

  1.   

    那个upload_date是datetime类型,请问怎么直接通过日期查询呢?
      

  2.   

    where `upload_date` > '2013-07-28' and `upload_date` <= '2013-07-28 23:59:59' 或者where date(`upload_date`)= '2013-07-28'
      

  3.   

    ACMAIN_CHM大大,我那个语句有什么问题吗?都执行不了
      

  4.   

    你的意思是取今天只有一条记录的吧 SELECT `number`,`recipient_name`,`ship_address_1` 
    FROM `sale_orders` 
    WHERE `upload_date` > '2013-07-28' 
    GROUP BY `number`,`recipient_name`,`ship_address_1`
    having count(*)=1
      

  5.   

    ACMAIN_CHM大大,以下是改完后的语句
    SELECT * FROM `sale_orders` T WHERE  `account`='PM_AC' AND 1=(select count(*) from `sale_orders` where date(`upload_date`)='2013-07-28' AND `recipient_name`=T.`recipient_name` AND `account`='PM_AC' AND `ship_address_1`=T.`ship_address_1`) AND date(`upload_date`)='2013-07-28' GROUP BY `recipient_name`,`ship_address_1`, `number`
    rucypli:
    对,我的意思是统计`recipient_name`,`ship_address_1`这两个字段相同的只出现一次的记录
    但是现在这个语句执行不了,也不报错,网页就一直在那里转。
      

  6.   

    不知道是不是没加统计语句的原因,我改成以下的就有报错了SELECT * ,group_concat('  ' , concat_ws( ' X ', `jj_sku` , `quantity_purchased` ) FROM `sale_orders` T WHERE  `account`='PM_AC' AND 1=(select count(*) from `sale_orders` where date(`upload_date`)='2013-07-28' AND `recipient_name`=T.`recipient_name` AND `account`='PM_AC' AND `ship_address_1`=T.`ship_address_1`) AND date(`upload_date`)='2013-07-28' GROUP BY `recipient_name`,`ship_address_1`, `number`#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `sale_orders` T WHERE `account`='PM_AC' AND 1=(select count(*) from `sale_' at line 1
      

  7.   

    SELECT * FROM `sale_orders` T 
    WHERE  `account`='PM_AC' 
    AND 1=(select count(*) from `sale_orders` 
    where date(`upload_date`)='2013-07-28' 
    AND `recipient_name`=T.`recipient_name` 
    AND `account`='PM_AC' 
    AND `ship_address_1`=T.`ship_address_1`) 
    AND date(`upload_date`)='2013-07-28' 确认这个语句有符合条件的记录吗? 你的表中是否存在符合条件的记录?
      

  8.   

    SELECT *  FROM `sale_orders` T 
    WHERE date(`upload_date`) ='2013-7-28' 
    AND `account`='PM_AC' 
    AND 1=(select count(*) from `sale_orders` 
    where date(`upload_date`) ='2013-7-28' 
    AND `package_area`='SZ' 
    AND `account`='PM_AC' 
    AND `recipient_name`=T.`recipient_name` 
    AND `package_area`='SZ' 
    AND `ship_address_1`=T.`ship_address_1`)  
    AND `package_area`='SZ' 
    GROUP BY `recipient_name` , `ship_address_1`这个语句执行花了10秒,那我统计一个月每天的数据,那不要花很长很长时间,请问有没有方法优化一下,感觉就是那个date(`upload_date`) ='2013-7-28' 很耗时间
      

  9.   

    where `upload_date` > '2013-07-28' and `upload_date` <= '2013-07-28 23:59:59' 
      

  10.   

    ACMAIN_CHM大大,语句可以执行了,没问题了,不过执行时间太长了,一个语句要10秒左右,才100多条记录,请问有没有方法优化?
    //按包装区域来统计邮件总数
    function sale_address_package_statistics($date,$account,$package){
    $sql_order_address="SELECT * FROM `sale_orders` T ";
    $sql_order_address.="WHERE date(`upload_date`) ='$date' ";
    $sql_order_address.="AND `account` ='$account' ";
    if($package=='MIX')
    {$sql_order_address.="AND 1<(select count(*) from `sale_orders` where date(`upload_date`) ='$date' AND `account` ='$account' AND `recipient_name`=T.`recipient_name`  AND `ship_address_1`=T.`ship_address_1`) ";
    }
    else
    {
    $sql_order_address.="AND 1=(select count(*) from `sale_orders` where date(`upload_date`) ='$date' AND `account` ='$account' AND `recipient_name`=T.`recipient_name`  AND `ship_address_1`=T.`ship_address_1`) ";
    $sql_order_address.="AND `package_area`='$package' ";
    }
    $sql_order_address.="GROUP BY `recipient_name` , `ship_address_1`";$result_label = mysql_query($sql_order_address);
    $order_address=mysql_affected_rows();
    if(empty($order_address))
    {
    return 0;
    }
    else
    {
    return $order_address;
    }
    }
      

  11.   

    改成where `upload_date` > '2013-07-28' and `upload_date` <= '2013-07-28 23:59:59' 也是一样的执行时间
      

  12.   

    我用upload_date做为条件执行一个语句要用8-10秒,而我改成用number做为条件只要0.15秒,这个差距太大了