package my.test.expression;
import my.test.TestBase;
public class SubqueryTest extends TestBase {
public static void main(String[] args) throws Exception {
new SubqueryTest().start();
}
@Override
public void startInternal() throws Exception {
stmt.executeUpdate("drop table IF EXISTS SubqueryTest");
stmt.executeUpdate("create table IF NOT EXISTS SubqueryTest(id int, name varchar(500))");
stmt.executeUpdate("insert into SubqueryTest(id, name) values(1, 'a1')");
stmt.executeUpdate("insert into SubqueryTest(id, name) values(1, 'b1')");
stmt.executeUpdate("insert into SubqueryTest(id, name) values(2, 'a2')");
stmt.executeUpdate("insert into SubqueryTest(id, name) values(2, 'b2')");
stmt.executeUpdate("insert into SubqueryTest(id, name) values(3, 'a3')");
stmt.executeUpdate("insert into SubqueryTest(id, name) values(3, 'b3')");
//严格来说这种sql才算Subquery,上面的in,ALL,ANY,SOME都只是普通的select
//Subquery包含的行数不能大于1,而in,ALL,ANY,SOME没限制,
//想一下也理解,比如id> (select id from SubqueryTest where id>1)如果这个Subquery大于1行,那么id就不知道和谁比较
//sql = "select * from SubqueryTest where id > (select id from SubqueryTest where id>1)";
//但是Subquery可以有多例
sql = "select * from SubqueryTest where id > (select id, name from SubqueryTest where id=1 and name='a1')";
executeQuery();
}
}