Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将此MySQL查询最小化为1?_Mysql - Fatal编程技术网

如何将此MySQL查询最小化为1?

如何将此MySQL查询最小化为1?,mysql,Mysql,我有三个问题,我想把它减少到一个。我该怎么做 $query = "SELECT COUNT(*) FROM states WHERE id = 1"; $query2 = "SELECT COUNT(*) FROM cities WHERE id = 5"; $query3 = "SELECT COUNT(*) FROM areas WHERE id = 3"; 另外,如果有人给我指出一些很棒的网站或文章,可以帮助我练习和理解MySQL命令,我将不胜感激。非常感谢 编

我有三个问题,我想把它减少到一个。我该怎么做

    $query  = "SELECT COUNT(*) FROM states WHERE id = 1";
    $query2 = "SELECT COUNT(*) FROM cities WHERE id = 5";
    $query3 = "SELECT COUNT(*) FROM areas WHERE id = 3";
另外,如果有人给我指出一些很棒的网站或文章,可以帮助我练习和理解MySQL命令,我将不胜感激。非常感谢

编辑:我希望脚本返回一个结果(变量)中合并的行数。

好的,在一个查询中执行此操作的唯一方法(我知道)是:

SELECT 
(SELECT COUNT(*) FROM states WHERE id = 1) AS state_count,
(SELECT COUNT(*) FROM cities WHERE id = 5) AS city_count,
(SELECT COUNT(*) FROM areas WHERE id = 3) AS area_count
这几乎不能称为“优化”,因为还有3个表扫描,但无法避免这些扫描,因为您希望对三个不同的表进行计数

编辑

如果您想要三个数字的总和,那么以下是答案:

SELECT 
(
    (SELECT COUNT(*) FROM states WHERE id = 1) 
    + (SELECT COUNT(*) FROM cities WHERE id = 5) 
    + (SELECT COUNT(*) FROM areas WHERE id = 3)
) AS sum
我知道,在一个查询中实现这一点的唯一方法是:

SELECT 
(SELECT COUNT(*) FROM states WHERE id = 1) AS state_count,
(SELECT COUNT(*) FROM cities WHERE id = 5) AS city_count,
(SELECT COUNT(*) FROM areas WHERE id = 3) AS area_count
这几乎不能称为“优化”,因为还有3个表扫描,但无法避免这些扫描,因为您希望对三个不同的表进行计数

编辑

如果您想要三个数字的总和,那么以下是答案:

SELECT 
(
    (SELECT COUNT(*) FROM states WHERE id = 1) 
    + (SELECT COUNT(*) FROM cities WHERE id = 5) 
    + (SELECT COUNT(*) FROM areas WHERE id = 3)
) AS sum
编辑:我更喜欢@Silver Light的答案,但由于他想不出另一种方法,我想我还是把这一个留在这里作为参考


编辑:我更喜欢@Silver Light的答案,但因为他想不出另一种方法来做,我想我还是把这个留到这里作为参考。

假设
id
是主键,然后
选择1
:)@Silver Light Good point假设
id
是主键,然后
选择1
:)@Silver Light Good point我不想要太多的结果,我想要的是它应该返回合并的行数..我不想要太多的结果,我想要的是它应该返回合并的行数..UNION应该在这里做什么?它是mySQL中的一个连接操作符吗?“states”、“cities”和“area”不是别名吗?如何将结果存储在一个别名中而不是三个别名中?UNION在这里应该做什么?它是mySQL中的一个连接操作符吗?“states”、“cities”和“area”不是别名吗?如何将结果存储在一个别名中而不是三个别名中?