如何在一个查询SQL中执行双选语句


How to do a double select statement in one query SQL

可以在一个查询中执行一个双选语句,并单独显示每个值,第一次选择使用sumsuma,我只希望有一个值,第二次选择使用4个值。

echo ' ' . htmlentities($rowsm['sum'], ENT_QUOTES, 'UTF-8') . '<br>'; 
$query = "SELECT SUM(a.totalpoints) as sum
          FROM total as a
          WHERE a.id = '$id'
          GROUP BY a.id
          UNION ALL
SELECT SUM(s.points) as suma
       FROM points as s 
       GROUP BY s.id

这是我得到的输出

A 21 first select
A 11 second select
A 10 second select
A 9 second select
A 14 second select

21 总额

A 11 points
A 10 points
A 9 points
A 14 points

在UNION ALL中,相应的字段需要具有相同的名称,否则系统将如何决定在列标题中显示哪个名称?您的SQL需要采用以下形式:

SELECT SUM(a.totalpoints) as suma
      FROM total as a
      WHERE a.id = '$id'
      GROUP BY a.id
      UNION ALL
SELECT SUM(s.points) as suma
   FROM points as s 
   GROUP BY s.id

此外,sum是一个关键字,因此不能使用名为sum的别名。即"as sum"可能无效。

除非是事务,否则不能在一个查询中调用多个select语句。将您的查询更改为:

$query = "
    START TRANSACTION;
    SELECT SUM(a.totalpoints) as suma
              FROM total as a
              WHERE a.id = '$id'
              GROUP BY a.id
              UNION ALL
    SELECT SUM(s.points) as suma
           FROM points as s 
           GROUP BY s.id
    COMMIT;";

正如@Swagata所提到的,您不能将关键字用作别名