如何解决php mysql将多个相同的查询合并为一个
| 所以我的范围是1到40 我必须使用该命令才能从同一表和同一列但从不同范围执行不同的查询,例如:mysql_query(\"SELECT * FROM table WHERE column > 1 && column <= 15\");
mysql_query(\"SELECT * FROM table WHERE column >=18 && column <= 30\");
mysql_query(\"SELECT * FROM table WHERE column >= 35 && column <= 38\");
我从这些查询中针对不同的操作一一获得了总行数...但是如何将这三个查询(例如3个查询)合并为1个并获得相同的结果?
解决方法
SELECT * FROM table
WHERE (column > 1 AND column <= 15)
OR (column >= 18 AND column <= 30)
OR (column >= 35 AND column <= 38)
//编辑:OP希望为每个条件计算行数:
SELECT
(SELECT COUNT(*) FROM table WHERE column > 1 AND column <= 15) AS count_1,(SELECT COUNT(*) FROM table WHERE column >= 18 AND column <= 30) AS count_2,(SELECT COUNT(*) FROM table WHERE column >= 35 AND column <= 38) AS count_3
FROM table
count_1,count_2和count_3是每个条件的行数。
, 大量编辑,因为我误解了问题
如果您想要所有行,则可以执行以下操作:
SELECT * FROM table WHERE (column > 1 AND column <= 15) OR
(column >=18 AND column <= 30) OR
(column >= 35 AND column <= 38)
但是,如果您只想对每个计数,那不是正确的方法。可以使用count(*)
在MySQL中直接计算该计数。即使您要执行三个单独的查询,也最好使用ѭ4而不是选择所有行(它使用的内存要少得多)。
这样,您就可以像这样获取所有行的计数:
$query = \"SELECT \".
\" (SELECT COUNT(*) FROM table WHERE column > 1 AND column <= 15) AS count_1,\".
\" (SELECT COUNT(*) FROM table WHERE column >= 18 AND column <= 30) AS count_2,\".
\" (SELECT COUNT(*) FROM table WHERE column >= 35 AND column <= 38) AS count_3\";
$res = mysql_query($query);
extract( mysql_fetch_assoc($res) );
echo \"The counts are $count_1,$count_2,and $count_3\";
extract
函数将采用关联数组,并为该数组中的每个项目设置局部变量。我只是觉得它比使用mysql_fetch_assoc
返回的数组要容易得多。
注意:@ fn-n首先发布了SQL,我只是将其格式化为PHP。我会用一种不同的方式写它,除了他已经以正确的方式做它了:)
,
$query = \'SELECT * FROM table \'.
\'WHERE (column > 1 && column <= 15) \'.
\'OR (column >=18 && column <= 30) \'.
\'OR (column >= 35 && column <= 38)\';
mysql_query($query);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。