MySQLでall、any、someクエリのケース
5241 ワード
1、データテーブルとデータの準備
2、ALLはサブクエリの前に、比較演算子によって1つの式または列の値をサブクエリが返す1列の値の各行と比較し、1回の比較の結果がFALSEであれば、ALLテストはFALSEを返す.
ケース1:科目番号が「1」のこのコースのすべての成績よりも成績が大きい学生の試験情報を調べる
説明:>ALLは各値より大きいことを示します.すなわち、最大値より大きいことを示す.例えば、>ALL(1,2,3)は3より大きいことを示す.
3、ANYがサブクエリと一緒に使用される場合、サブクエリの結果の各ローは、比較演算子、式、またはフィールドに従って計算および比較されます.一度条件を満たすことがあれば、ANYの結果は本当です.ケース2:科目番号が「1」のいずれの成績よりも成績が大きい試験情報を調べる
注意:「=ANY」演算子は「IN」と同等です.「<>ANY」演算子は「NOT IN」とは異なります.「<>ANY(A,B,C)」は、Aに等しくない、またはBに等しくない、またはCに等しくないことを表す.「NOT IN(A,B,C)」は、Aに等しくなく、Bに等しくなく、Cに等しくないことを表す.ALL「NOT IN」と同じ意味
4、someとanyの使い方は同じですが、ここではあまり紹介しません.
CREATE TABLE `exam` (
`examid` int(11) NOT NULL AUTO_INCREMENT,
`studentId` varchar(20) NOT NULL,
`subjectId` varchar(20) NOT NULL,
`score` int(11) NOT NULL,
PRIMARY KEY (`examid`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
--
INSERT INTO exam VALUES (NULL,'123456',1,60),(NULL,'126556',1,75),(NULL,'12156',2,93),(NULL,'654054',1,86),(NULL,'652314',2,80),(NULL,'645874',2,95),(NULL,'654321',2,93)
2、ALLはサブクエリの前に、比較演算子によって1つの式または列の値をサブクエリが返す1列の値の各行と比較し、1回の比較の結果がFALSEであれば、ALLテストはFALSEを返す.
ケース1:科目番号が「1」のこのコースのすべての成績よりも成績が大きい学生の試験情報を調べる
SELECT * FROM exam WHERE score> ALL(SELECT score FROM exam WHERE subjectId=1)
説明:>ALLは各値より大きいことを示します.すなわち、最大値より大きいことを示す.例えば、>ALL(1,2,3)は3より大きいことを示す.
3、ANYがサブクエリと一緒に使用される場合、サブクエリの結果の各ローは、比較演算子、式、またはフィールドに従って計算および比較されます.一度条件を満たすことがあれば、ANYの結果は本当です.ケース2:科目番号が「1」のいずれの成績よりも成績が大きい試験情報を調べる
SELECT * FROM exam WHERE score> ANY(SELECT score FROM exam WHERE subjectId=1)
注意:「=ANY」演算子は「IN」と同等です.「<>ANY」演算子は「NOT IN」とは異なります.「<>ANY(A,B,C)」は、Aに等しくない、またはBに等しくない、またはCに等しくないことを表す.「NOT IN(A,B,C)」は、Aに等しくなく、Bに等しくなく、Cに等しくないことを表す.ALL「NOT IN」と同じ意味
4、someとanyの使い方は同じですが、ここではあまり紹介しません.