我相信 jOOQ 中的更新不支持连接,所以我一直在探索如何解决它......
我的第一次尝试是使用 where in,但问题是 MySQL 不支持 FROM 子句中的目标表:
create
.update(USER)
.set(USER.name, concat(USER.NAME, "some text"))
.where(USER.ID.in(
create
.select(USER.ID)
.from(USER)
.join(TEAM)
.on(USER.TEAM_ID.eq(TEAM.ID))
.where(TEAM.STATE.equal("test"))
))
.execute();
Run Code Online (Sandbox Code Playgroud)
我的第二个尝试是用于用户临时表(灵感来自这个答案)。问题是,我不知道如何在选择中引用临时表。到目前为止,这是我使用本机 SQL 的尝试:
create
.update(USER)
.set(USER.name, concat(USER.NAME, "some text"))
.where(USER.ID.in(
create
.select("user_nested.id") // This line doesn't work
.from("SELECT * FROM user AS user_nested")
.join(TEAM)
.on("user_nested.team_id = team.id")
.where(TEAM.STATE.equal("test"))
))
.execute();
Run Code Online (Sandbox Code Playgroud)
我最终想要得到的查询类似于:
UPDATE user
SET user.name = concat(user.email, 'some text')
WHERE user.id IN (
SELECT user_nested.id
FROM (SELECT * FROM user) AS user_nested
JOIN …Run Code Online (Sandbox Code Playgroud) 我是MYSQL查询语句的新手,我目前仍然坚持使用以下代码
UPDATE fb_messages
SET sent = 'Yes'
WHERE msg_id = (SELECT MAX(msg_id) AS MSG_ID
FROM fb_messages
WHERE sent = 'No')
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误
#1093 - You can't specify target table 'fb_messages' for update in FROM clause
Run Code Online (Sandbox Code Playgroud)
我搜索了一个解决方案,以解决类似的情况,但我真的找不到,请帮助
我有:
mysql_query("DELETE FROM mytable ORDER BY id DESC LIMIT 3, 999999999;")
or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
但似乎并不喜欢它.我想保留最近的三行并删除其他所有内容.思考?
跟进 - 感谢同时的jinx!
我尝试了代码,并得到此版本错误:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Run Code Online (Sandbox Code Playgroud)
我检查了我的主机,我有:MySQL版本5.5.36-cll-lve
我没想到这一点.限制需要什么版本?有没有其他方法可以写出这个有效的方法?
假设我有一个产品表,并且只有 2 个字段;id 和购买日期。我想删除 2019 年购买的最后一个产品。我尝试使用以下查询来执行此操作:
DELETE FROM products
WHERE id = (SELECT id
FROM products
WHERE purchase_date LIKE '2019%'
ORDER BY purchase_date DESC
LIMIT 1);
Run Code Online (Sandbox Code Playgroud)
不幸的是,出现了标题中写的错误。我知道这个错误是一个已知错误,我已经尝试寻找解决方案。我已经查看了这里和这里,但是,我无法理解如何更改我的查询以使其正常工作。
我将很高兴获得帮助和解释。提前致谢。
在Linq或Linq to Sql更准确:是那里的之间的差异== null和IsNullOrEmpty在下面的查询?
From a in context.SomeTable
where a.SomeId.Equals(SomeOtherId)
&& a.SomeOtherColumn == null
Select new .....
Run Code Online (Sandbox Code Playgroud)
&
From a in context.SomeTable
where a.SomeId.Equals(SomeOtherId)
&& string.IsNullOrEmpty(a.SomeOtherColumn)
Select new .....
Run Code Online (Sandbox Code Playgroud)