如何使用jOOQ编写以下SQL?
SELECT *
FROM food_db_schema.tblCategory AS t1
LEFT OUTER JOIN food_db_schema.tblCategory AS t2 ON t1.category_id = t2.parent_id
WHERE t2.parent_id IS NULL
AND t1.heartbeat = "ALIVE";
Run Code Online (Sandbox Code Playgroud)
数据库是mySQL
我在jclipse中安装了jOOQ,为mySQL生成了类,但是我仍然有问题要写一些基本的查询.
我试图通过返回生成的密钥来组合插入查询,但编译器抛出错误
表:tblCategory列:category_id,parent_id,name,rem,uipos
Result<TblcategoryRecord> result= create.insertInto(Tblcategory.TBLCATEGORY,
Tblcategory.PARENT_ID, Tblcategory.NAME, Tblcategory.REM, Tblcategory.UIPOS)
.values(node.getParentid())
.values(node.getName())
.values(node.getRem())
.values(node.getUipos())
.returning(Tblcategory.CATEGORY_ID)
.fetch();
Run Code Online (Sandbox Code Playgroud)
还尝试了其他不同的方法如何正确地做到这一点?
谢谢charis
这是嵌套集模型的"添加节点"SQL查询
LOCK TABLE mytestdb.tbltree WRITE;
SELECT @myRight := rgt FROM mytestdb.tbltree
WHERE name = 'apples';
UPDATE mytestdb.tbltree SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE mytestdb.tbltree SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO mytestdb.tbltree(name, lft, rgt)
VALUES('beans', @myRight + 1, @myRight + 2);
UNLOCK TABLES;
Run Code Online (Sandbox Code Playgroud)
并映射到jOOQ
Record record = create.select(Tbltree.RGT)
.from(Tbltree.TBLTREE)
.where(Tbltree.NAME.equal("apples"))
.fetchOne();
int myright = record.getValue(Tbltree.RGT);
create.update(Tbltree.TBLTREE).set(Tbltree.RGT, Tbltree.RGT.add(2))
.where(Tbltree.RGT.greaterThan(myright)).execute();
create.update(Tbltree.TBLTREE).set(Tbltree.LFT, Tbltree.LFT.add(2))
.where(Tbltree.LFT.greaterThan(myright)).execute();
TbltreeRecord record2 = (TbltreeRecord) create
.insertInto(Tbltree.TBLTREE, Tbltree.NAME, Tbltree.LFT, Tbltree.RGT) …Run Code Online (Sandbox Code Playgroud)