簡體   English   中英

在SQL中使用兩個SELECT語句?

[英]Using two SELECT statements in SQL?

我有兩個表,一個是“點”,其中包含ID和點。 另一個表是“名稱”,並且包含ID,Forename和Surname。

我正在嘗試搜索姓安妮,姓布朗的人的總得分。

我需要參加嗎? 如果是這樣,這是正確的嗎?

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 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 sum(points) as Points
from
Points
inner join Name on Name.ID = Points.ID
where
Name.Forename ='Anne' and Name.SurName='Brown'

其次,FULL JOINS是不好的,因為它們從兩個集合中提取所有值,即使那些沒有匹配項也是如此。 如果只想返回符合條件的值(A和B),則必須使用INNER JOIN。

第三,這是有關SQL語句語法MySQL參考文檔 請考慮閱讀並至少熟悉一些基本知識,例如JOIN,聚合(包括GROUP BY和HAVING),WHERE子句,UNION,所提供的一些基本功能以及子查詢。 在這些基礎上擁有良好的基礎將使您通過大多數MySQL查詢獲得99%的方法。

您可以使用子查詢這樣編寫它。

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的地方

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM