事实上,JSQLParser 能够解析您的语句或您提到的示例:
select t1.a, t2.b from t1, t2 where t1.id = t2.id
第二个表不被识别为第二个FromItem,而是一个简单的 Join。要获取您的表格,您还需要查看getJoins。
这是我的测试代码,它是在 github https://github.com/JSQLParser/JSqlParser上使用 JSqlParser 的分支编写的。
public class MultiFromItems {
public static void main(String args[]) throws JSQLParserException {
String sql = "select t1.a, t2.b from t1, t2 where t1.id = t2.id";
Statement parse = CCJSqlParserUtil.parse(sql);
Select select = (Select)parse;
PlainSelect ps = (PlainSelect)select.getSelectBody();
System.out.println(ps);
System.out.println(ps.getFromItem());
System.out.println(ps.getJoins().get(0));
}
}