子查询(SQL)

在这里插入图片描述
在这里插入图片描述

三种写法:

#1.
#select cust_id from Orders left join OrderItems using(order_num)
#where item_price >= 10

#2.
# select cust_id from Orders, OrderItems
# where Orders.order_num = OrderItems.order_num
# and item_price >= 10

#3.
select cust_id from Orders
where order_num in(
    select order_num from OrderItems where item_price >= 10
)

在这里插入图片描述
在这里插入图片描述

三种写法:

# select cust_id,order_date from Orders left join OrderItems using(order_num)
# where prod_id  = 'BR01'
# order by order_date


# select cust_id,order_date from Orders a, OrderItems b 
# where a.order_num = b.order_num and b.prod_id  = 'BR01'
# order by order_date


select cust_id,order_date from Orders a
where order_num in (
select order_num from OrderItems 
where prod_id  = 'BR01'
)
order by order_date

在这里插入图片描述
在这里插入图片描述

三种写法:

# select cust_email from Customers left join Orders using(cust_id) 
# left join OrderItems using(order_num)
# where prod_id = 'BR01'

# select cust_email from Customers a, Orders b,OrderItems c
# where a.cust_id  =b.cust_id and b.order_num = c.order_num
# and prod_id = 'BR01'


select cust_email from Customers 
    where cust_id in (
        select cust_id from Orders where order_num in(
            select order_num from OrderItems 
                where prod_id = 'BR01'
)
)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用jsqlparser解析子查询sql的示例代码: ```java import java.io.StringReader; import java.util.List; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.parser.CCJSqlParserUtil; import net.sf.jsqlparser.statement.Statement; import net.sf.jsqlparser.statement.select.PlainSelect; import net.sf.jsqlparser.statement.select.Select; import net.sf.jsqlparser.statement.select.SubSelect; public class JSqlParserDemo { public static void main(String[] args) throws JSQLParserException { String sql = "SELECT * FROM (SELECT * FROM table1 WHERE id IN (SELECT id FROM table2)) AS subquery"; Statement statement = CCJSqlParserUtil.parse(sql); Select selectStatement = (Select) statement; PlainSelect plainSelect = (PlainSelect) selectStatement.getSelectBody(); SubSelect subSelect = (SubSelect) plainSelect.getFromItem(); Select subquery = (Select) subSelect.getSelectBody(); PlainSelect subqueryPlainSelect = (PlainSelect) subquery.getSelectBody(); List<Expression> expressions = subqueryPlainSelect.getSelectItems(); for (Expression expression : expressions) { System.out.println(expression.toString()); } } } ``` 上述代码中,我们首先将子查询sql语句作为字符串传入JSqlParser进行解析。然后,我们通过获取Select对象和PlainSelect对象来获取子查询的Select对象和PlainSelect对象。最后,我们可以通过获取子查询的PlainSelect对象来获取子查询中的Select字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值