我这个语句执行就没响应了,请问哪里有问题??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`样例数据
解决方案 »
- SQL中去掉某些重复的记录
- mysql 有没有类似于oracle的comment on之类的语法?
- 求一条mysql的统计查询语句
- Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
- 请教在mysql中,怎样使用全文搜索搜索中文内容
- 关于mysql中插入的问题
- 请问在数据库软件中,Oracle,SQL Server,Sybase,MySQL有什么不同?
- 如何将MYSQL中的数据导出成Excel格式文件---用PHP写!!???
- 帮忙看看条件查询为什么无效
- MySQL查询结合thinkPHP模板渲染的问题
- 求助----新手刚开始学习数据库,谁有郝斌老师的数据库视频
- 高手 求一段代码
FROM `sale_orders`
WHERE `upload_date` > '2013-07-28'
GROUP BY `number`,`recipient_name`,`ship_address_1`
having count(*)=1
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`这两个字段相同的只出现一次的记录
但是现在这个语句执行不了,也不报错,网页就一直在那里转。
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' 确认这个语句有符合条件的记录吗? 你的表中是否存在符合条件的记录?
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' 很耗时间
//按包装区域来统计邮件总数
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;
}
}