CREATE TABLE Student (SNO VARCHAR(10) primary key,Sname VARCHAR(10) NOT NULL,Sage DATETIME,Ssex ENUM(‘男’,’女’));
1.这根本不是什么查询语句,这是建表语句
2.如果你数据库里已经有这个表了,那肯定报错呀
CREATE TABLE Student
(
SNO VARCHAR(10) primary key,
Sname VARCHAR(10) NOT NULL,
Sage DATETIME,
Ssex ENUM('男',’女’)DEFAULT NULL
);
SELECT * FROM
(SELECT SCORE,SC.SNO AS SC_SNO FROM SC
JOIN Student AS
ST ON ST.SNO = SC.SNO WHERE CNO = '001')
AS A,
(SELECT SCORE,SC.SNO AS SC_SNO FROM SC JOIN Student AS ST ON ST.SNO = SC.SNO WHERE CNO = '002') AS B
WHERE A.SC_SNO=B.SC_SNO AND A.SCORE > B.SCORE
引号换英文引号,as去掉,这样试试
SELECT * FROM (SELECT SCORE,SC.SNO AS SC_SNO FROM SC JOIN Student AS ST ON ST.SNO = SC.`SNO` WHERE CNO = '001') A,
(SELECT SCORE,SC.SNO AS SC_SNO FROM SC JOIN Student AS ST ON ST.SNO = SC.`SNO` WHERE CNO = '002') B WHERE A.SC_SNO=B.SC_SNO AND A.SCORE > B.SCORE;
看着只是中英文引号的问题,反引号要么都加要么都不加;可能存在的问题是子查询的过滤条件和检索字段没有加别名,如果两张表都存在同名字段的话可能会报错。
SELECT
*
FROM
(SELECT
SCORE,
SC.SNO AS SC_SNO
FROM
SC
JOIN Student AS ST
ON
ST.SNO = SC.SNO
WHERE
CNO = '001') AS A,
(SELECT
SCORE,
SC.SNO AS SC_SNO
FROM
SC
JOIN Student AS ST
ON
ST.SNO = SC.SNO
WHERE
CNO = '002') AS B
WHERE
A.SC_SNO = B.SC_SNO
AND
A.SCORE > B.SCORE