使用本机SQL我可以选择、修改和将记录插入到这样的表中:
INSERT INTO MyTable (url, userName, id)
SELECT url, userName, '27AD2421-83B1-4872-A723-5BDF93688D7C'
FROM WebSite
WHERE id = '27AD2421-83B1-4872-A723-5BDF93688D7B'
由于ID字段是主键,这一点特别有用。
我想用JOOQ在Java中做同样的事情,但我不知道如何提供修改后的字段值。
这可能吗?如果可能,怎么可能?
您可以将T
类型的任何值转换为字段类型的表达式
在支持类型别名和未标记的联合的语言中(例如TypeScript、Ceylon),jOOQ API可以这样定义:
// All of these are "column expressions"
type F<T> = T | Field<T> | Select<? extends Record1<T>> | ...;
interface DSLContext {
<T1> XYZ<Record1<T1>> select(F<T1> field1);
<T1, T2> XYZ<Record1<T1, T2>> select(F<T1> field1, F<T2> field2);
<T1, T2, T3> XYZ<Record1<T1, T2, T3>> select(F<T1> field1, F<T2> field2, F<T3> field3);
}
但不幸的是,Java不支持这一点。我们唯一的选择是模拟上面的内容,这将允许混合
字段
interface DSLContext {
// Still fine
<T1> XYZ<Record1<T1>> select(T1 f1);
<T1> XYZ<Record1<T1>> select(Field<T1> f1);
// OK-ish
<T1, T2> XYZ<Record1<T1, T2>> select(T1 f1, T2 f2);
<T1, T2> XYZ<Record1<T1, T2>> select(T1 f1, Field<T2> f2);
<T1, T2> XYZ<Record1<T1, T2>> select(Field<T1> f1, T2 f2);
<T1, T2> XYZ<Record1<T1, T2>> select(Field<T1> f1, Field<T2> f2);
// Problems start here
<T1, T2, T3> XYZ<Record1<T1, T2, T3>> select(T1 f1, T2 f2, T3 f3);
<T1, T2, T3> XYZ<Record1<T1, T2, T3>> select(T1 f1, T2 f2, Field<T3> f3);
<T1, T2, T3> XYZ<Record1<T1, T2, T3>> select(T1 f1, Field<T2> f2, T3 f3);
<T1, T2, T3> XYZ<Record1<T1, T2, T3>> select(T1 f1, Field<T2> f2, Field<T3> f3);
<T1, T2, T3> XYZ<Record1<T1, T2, T3>> select(Field<T1> f1, T2 f2, T3 f3);
<T1, T2, T3> XYZ<Record1<T1, T2, T3>> select(Field<T1> f1, T2 f2, Field<T3> f3);
<T1, T2, T3> XYZ<Record1<T1, T2, T3>> select(Field<T1> f1, Field<T2> f2, T3 f3);
<T1, T2, T3> XYZ<Record1<T1, T2, T3>> select(Field<T1> f1, Field<T2> f2, Field<T3> f3);
}
由于这种令人望而却步的复杂性,jOOQ通常只为“所有绑定值”或“所有表达式”提供应用编程接口。在
Select()
的情况下,“所有绑定变量”的情况非常罕见,我们决定省略它:
interface DSLContext {
<T1> XYZ<Record1<T1>> select(Field<T1> f1);
<T1, T2> XYZ<Record1<T1, T2>> select(Field<T1> f1, Field<T2> f2);
<T1, T2, T3> XYZ<Record1<T1, T2, T3>> select(Field<T1> f1, Field<T2> f2, Field<T3> f3);
}
问题内容: 我正在插入一条记录,我想使用插入的最后一条记录的ID。这是我尝试过的: 我收到错误消息: SQL语法错误;请查看与您的MySQL服务器版本相对应的手册,以在“ SELECT LAST_INSERT_ID()”附近使用正确的语法。谁能告诉我我的错误在哪里?谢谢! 问题答案: 签出mysql_insert_id() 在mysql_query()命令中执行INSERT语句后运行该函数时,其结
我想在SQL中执行以下操作: 在jOOQ中,我将subQ存储到Select中 我的问题是,如何从subQ中获取maxCol列,并在join中使用它?我的连接是这样的: 我在()上出错 类型字段中的方法eq(字符串)不适用于参数(字段) 我该怎么办?
问题内容: 有没有办法插入预设值和我从选择查询中获得的值?例如: 我有“字符串”的值和数字5,但是我必须从这样的选择中找到[int]值: 那给我那个ID放在table1里面。 如何将其合并为一个语句? 问题答案: 使用查询,并将已知值放入:
就像有人说的第二种方式更慢,但我不确定,那么哪种方式更好呢?不能使数据库崩溃。
本文向大家介绍d3.js 基本选择和修改,包括了d3.js 基本选择和修改的使用技巧和注意事项,需要的朋友参考一下 示例 如果您熟悉jQuery和Sizzle语法,则d3选择应该不会有太大不同。d3模仿W3C Selectors API,使与元素的交互更加容易。 作为一个基本示例,请选择全部<p>并对其进行更改: 简而言之,这与jQuery中的相对相同 通常,您将对容器div进行一次选择,以添加一
问题内容: 我是SQL的初学者,对Transact-SQL不太了解。 我意识到这是一个新手问题,但是我正在寻找一个简单的解决方案。 我有一个带有一些列()的表。 主表 我想从该表中选择数据并插入到其他两个表中。 第一桌 是来自的前三个字符的组合 第一个表中的数据按的前三个字符和客户代码分组 第二张桌子 那么,如何通过使用SQL选择主表的行来插入第一张表和第二张表呢? 感谢您的所有答复。 问题答案: