Mysql 在查询中与其他列一起显示平均值

Mysql 在查询中与其他列一起显示平均值,mysql,sql,database,Mysql,Sql,Database,我想显示一个成员列表,它比所有其他成员的平均值都高。我的桌子看起来像这样: CREATE TABLE Members ( MemberID nvarchar(50) NOT NULL PRIMARY KEY, MemberName nvarchar(50) NOT NULL, MemberAddress nvarchar(50), MemberContact int, MemberAge int, RegistrationDate nvarch

我想显示一个成员列表,它比所有其他成员的平均值都高。我的桌子看起来像这样:

CREATE TABLE Members
(
    MemberID nvarchar(50) NOT NULL PRIMARY KEY, 
    MemberName nvarchar(50) NOT NULL, 
    MemberAddress nvarchar(50),
    MemberContact int,
    MemberAge int,
    RegistrationDate nvarchar(50) 
);


--Inserting Values into Members' Table--
INSERT INTO Members(MemberID, MemberName, MemberAddress, MemberContact, MemberAge,RegistrationDate)
VALUES ('MEM01', 'Muhammed Abdul', 'Damansara','01121565987', '34', '20/02/2017');
INSERT INTO Members(MemberID, MemberName, MemberAddress, MemberContact, MemberAge,RegistrationDate)
VALUES ('MEM02', 'Kyle Franklin', 'Kuala Lumpur','01725445807','36', '10/04/2017');
INSERT INTO Members(MemberID, MemberName, MemberAddress, MemberContact, MemberAge,RegistrationDate)
VALUES ('MEM03', 'Albert Derio', 'Shah Alam','01800235613','56','6/03/2017');
INSERT INTO Members(MemberID, MemberName, MemberAddress, MemberContact, MemberAge,RegistrationDate)
VALUES ('MEM04', 'Khaled Ahmad', 'Penang','01602144956','33','9/01/2017');
以下是我到目前为止尝试过但没有成功的方法:

SELECT MemberID, MemberName, MemberAge,FROM Members 
(SELECT AVG(Members.MemberAge) AS AverageAge)
WHERE MemberAge>=AverageAge
…虽然这将导致新的
AverageAge
列中出现重复数据-但批处理查询(返回多个结果集的查询)将更干净:

MySQL具有隐式变量声明(与T-SQL不同,T-SQL需要向前声明),因此您可以这样做:

-- 1. Get the average-age value:
SELECT @averageAge = AVG(MemberAge) FROM Members;

-- 2. Return the average-age value to the database client as a scalar value:
SELECT @averageAge;

-- 3. Query for Members whose age is above-average in a second batch result:
SELECT
    Members.*
FROM
    Members
WHERE
    MemberAge > @averageAge
-- 1. Get the average-age value:
SELECT @averageAge = AVG(MemberAge) FROM Members;

-- 2. Return the average-age value to the database client as a scalar value:
SELECT @averageAge;

-- 3. Query for Members whose age is above-average in a second batch result:
SELECT
    Members.*
FROM
    Members
WHERE
    MemberAge > @averageAge