可以在一个查询中执行一个双选语句,并单独显示每个值,第一次选择使用sum
和suma
,我只希望有一个值,第二次选择使用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所提到的,您不能将关键字用作别名