繁体   English   中英

我可以使用SQL同时计算行数和获取列值吗?

[英]Can I count rows and get a column value at the same time with SQL?

我正在使用SELECT COUNT(*)来验证用户是否存在PHP PDO和MySQL。 我还想获得一个特定的列值。 每个用户只有一个价值/行,或者没有价值/行。

我正在尝试做这样的事情:

$stmt = $link->prepare('SELECT COUNT(*) AND column FROM table WHERE user=:user');

我希望得到的是1和列值。 然后,我可以在其中将列值绑定到变量。

如果没有,我将必须先执行SELECT COUNT(*)然后在验证用户和SELECT COUNT(*)查询中的此列是否存在之后,再执行另一个查询以获取列名。

您只需要考虑一下。

“ count(*)”不是“验证用户存在”的特殊方法。 这只是选择计数的查询,因为您根本不知道选择其他什么。

但是,只要您有一列可供选择,就不需要计数了。

因此,只需选择您的值,只要您能获得它,就可以说出一个用户存在

$stmt = $link->prepare('SELECT column FROM table WHERE user=:user');
$stmt->execute([$user]);
$col = $stmt->fetchColumn();

if ($col) {
    // user exists
    $something = $col; // use $col as you wanted
}

在选择count()和没有group by运算符的列时,这是一个棘手的查询,通常应避免使用它。

SELECT count(*), column FROM table where user=:user

这是你想要的吗?

否则,您可以在php中计算结果数

$pdo = new PDO('mysql:host=XXX.fr.mysql;dbname=YYYY', 'ZZZ', 'TTT', $pdo_options);

    $response = $pdo->query('SELECT column FROM table');
    $count = 0;
    while ($data = $response->fetch())
    {
        $count++;
    }
    $reponse->closeCursor(); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM