相关疑难解决方法(0)

使用连接更新 jOOQ 中的行

我相信 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)

java mysql sql jooq

4
推荐指数
1
解决办法
1834
查看次数

更新mysql表,从同一个表中选择

我是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

2
推荐指数
1
解决办法
1万
查看次数

PHP - MySQL - 删除除最近3行之外的所有行&此版本的MySQL尚不支持'LIMIT&IN/ALL/ANY/SOME子查询'

我有:

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

我没想到这一点.限制需要什么版本?有没有其他方法可以写出这个有效的方法?

php mysql

2
推荐指数
3
解决办法
123
查看次数

错误代码:1093。您无法在 FROM 子句中指定更新的目标表

假设我有一个产品表,并且只有 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)

不幸的是,出现了标题中写的错误。我知道这个错误是一个已知错误,我已经尝试寻找解决方案。我已经查看了这里这里,但是,我无法理解如何更改我的查询以使其正常工作。

我将很高兴获得帮助和解释。提前致谢。

mysql sql sql-delete

2
推荐指数
1
解决办法
6036
查看次数

Linq == null vs IsNullOrEmpty - 不同或相同?

LinqLinq to Sql更准确:是那里的之间的差异== nullIsNullOrEmpty在下面的查询?

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)

c# linq linq-to-sql

0
推荐指数
1
解决办法
5538
查看次数

标签 统计

mysql ×4

sql ×2

c# ×1

java ×1

jooq ×1

linq ×1

linq-to-sql ×1

php ×1

sql-delete ×1