作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从查询和子查询中获取所有选择的项目
根据此链接,https://stackoverflow.com/a/30505741/8249665我可以从主查询中获取选定的项目。
对于这样的子查询 - “SELECT * FROM CUSTOMERS WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500)
”,我必须导航到 selectbody -> where -> rightItemList -> 再次选择body -> 最后项目。
此外,还可以有更多嵌套选择。如何在使用子查询/子查询和不使用子查询的情况下实现它?
最佳答案
这是您提到的链接的简单扩展。
为了遍历解析树,JSqlParser提供了访问者模式。在这里,我重用了TablesNamesFinder,它使用了访问所有节点的完整实现。现在,sql 嵌套的深度并不重要。对于覆盖方法的每次调用,您都会获得主 SQL 或 SQL 的子选择。
public static void main(String args[]) throws JSQLParserException {
String sql = "SELECT * FROM CUSTOMERS WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500)";
Select select = (Select) CCJSqlParserUtil.parse(sql);
TablesNamesFinder tablesNamesFinder = new TablesNamesFinder() {
@Override
public void visit(PlainSelect plainSelect) {
System.out.println("plainselect -> " + plainSelect.toString());
for (SelectItem item : plainSelect.getSelectItems()) {
System.out.println(item.toString());
}
super.visit(plainSelect);
}
};
tablesNamesFinder.getTableList(select);
}
关于java - JSQLParser 凝胶查询和子查询中的所有选择项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61225091/
我有一个 redis 转储,其中包含 String/Double 类型的键/值对。是否有可能获得所有值大于给定数字的键(或它们的计数)? 最佳答案 如果你使用一个 SortedSet,你的 doubl
我是一名优秀的程序员,十分优秀!