Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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 在SQL中使用两个SELECT语句?_Mysql_Sql_Select_Sum - Fatal编程技术网

Mysql 在SQL中使用两个SELECT语句?

Mysql 在SQL中使用两个SELECT语句?,mysql,sql,select,sum,Mysql,Sql,Select,Sum,我有两个表,一个是“点”,其中包含ID和点。另一个表是“name”,包含ID、名字和姓氏 我试图搜索名为安妮、姓布朗的人的总分 我需要加入吗?如果是,这是否正确 SELECT Name.Forename, Name.Surname FROM Name FULL OUTER JOIN Points ON Name.ID=Points.ID ORDER BY Name.Forename; 但是,我还必须添加点,因此我必须使用: SELECT SUM (`points

我有两个表,一个是“点”,其中包含ID和点。另一个表是“name”,包含ID、名字和姓氏

我试图搜索名为安妮、姓布朗的人的总分

我需要加入吗?如果是,这是否正确

SELECT Name.Forename, Name.Surname
    FROM Name
    FULL OUTER JOIN Points
    ON Name.ID=Points.ID
    ORDER BY Name.Forename;
但是,我还必须添加点,因此我必须使用:

SELECT SUM (`points`) FROM Points
还有WHERE语句,因此它只搜索具有此名称的人员:

WHERE `Forename`="Anne" OR `Surname`="Brown";

那么这一切是如何结合在一起的(基于你这样做的假设)

因此,首先,你的答案是:

select sum(points) as Points
from
Points
inner join Name on Name.ID = Points.ID
where
Name.Forename ='Anne' and Name.SurName='Brown'
其次,完全联接是不好的,因为它们从两个集合中提取所有值,即使是那些不匹配的值。如果只想返回符合条件(A和B)的值,则必须使用内部联接


第三,这里是一个例子。请考虑阅读它,并熟悉自己的基本知识,如连接、聚合(包括分组和拥有),其中子句、工会、一些基本功能提供,以及可能的子查询。在这些方面有一个良好的基础可以让你99%地通过大多数MySQL查询。

因此,首先,你的答案是:

select sum(points) as Points
from
Points
inner join Name on Name.ID = Points.ID
where
Name.Forename ='Anne' and Name.SurName='Brown'
SELECT Name.ID, Forename, Surname, SUM(Points)
FROM Name
INNER JOIN Points ON Name.ID = Points.ID
/* Optional WHERE clause:
WHERE Name.ForeName = 'Anne' AND Name.Surname='Brown'
*/
GROUP BY Name.ID, Name.Forename, Name.Surname
其次,完全联接是不好的,因为它们从两个集合中提取所有值,即使是那些不匹配的值。如果只想返回符合条件(A和B)的值,则必须使用内部联接


第三,这里是一个例子。请考虑阅读它,并熟悉自己的基本知识,如连接、聚合(包括分组和拥有),其中子句、工会、一些基本功能提供,以及可能的子查询。在这些方面有一个良好的基础将使您在大多数MySQL查询中获得99%的成功。

您可以通过一个子查询这样编写它

SELECT Name.ID, Forename, Surname, SUM(Points)
FROM Name
INNER JOIN Points ON Name.ID = Points.ID
/* Optional WHERE clause:
WHERE Name.ForeName = 'Anne' AND Name.Surname='Brown'
*/
GROUP BY Name.ID, Name.Forename, Name.Surname
SELECT Name.Forename, Name.Surname, Name.ID,
(SELECT SUM (`points`) FROM Points where Points.ID = Name.ID) as total_points
    FROM Name ORDER BY Name.Forename;

然而,我想指出的是,您对表的链接似乎是不正确的。如果不查看这些表,我无法完全确定,但我想应该是points.userid=name.id,您可以通过子查询这样编写它

SELECT Name.Forename, Name.Surname, Name.ID,
(SELECT SUM (`points`) FROM Points where Points.ID = Name.ID) as total_points
    FROM Name ORDER BY Name.Forename;
然而,我想指出的是,您对表的链接似乎是不正确的。如果不看表,我不能完全确定,但我想应该是points.userid=name.id所在的位置