我目前在理解和编写递归查询方面遇到了一些麻烦。我知道递归查询用于搜索信息的层次结构,但我还没有在网上找到一个可以向上移动层次结构的简单解决方案。例如,假设我有一个对家谱建模的关系:
create table family_tree (
child varchar(10)
parent varchar(10)
);
Run Code Online (Sandbox Code Playgroud)
如果我想编写一个递归查询,遍历这个家谱,收集所有父母直到起源,我应该怎么做?
提前致谢。
我希望我能以一种可以理解的方式描述我的挑战.我在Oracle Database 12c上有两个表,如下所示:
表名"发票"
I_ID | invoice_number | creation_date | i_amount
------------------------------------------------------
1 | 10000000000 | 01.02.2016 00:00:00 | 30
2 | 10000000001 | 01.03.2016 00:00:00 | 25
3 | 10000000002 | 01.04.2016 00:00:00 | 13
4 | 10000000003 | 01.05.2016 00:00:00 | 18
5 | 10000000004 | 01.06.2016 00:00:00 | 12
Run Code Online (Sandbox Code Playgroud)
表名"付款"
P_ID | reference | received_date | p_amount
------------------------------------------------------
1 | PAYMENT01 | 12.02.2016 13:14:12 | 12
2 | PAYMENT02 | 12.02.2016 15:24:21 | 28
3 | PAYMENT03 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将不同的行合并为一个,因为它们具有相同的ID但不同的列值.
例如 :
(table1)
id colour
1 red
1 blue
2 green
2 red
Run Code Online (Sandbox Code Playgroud)
我希望这个结合起来,结果是:
id colour1 colour2
1 red blue
2 green red
Run Code Online (Sandbox Code Playgroud)
要么
id colour
1 red, blue
2 green, red
Run Code Online (Sandbox Code Playgroud)
或者上面的任何其他变化,以便行以某种方式连接在一起.
任何帮助,将不胜感激!提前致谢.
假设我有一张桌子:
ID ACCNT DESC
1 123 aaa
2 234 bbb
3 345 ccc
Run Code Online (Sandbox Code Playgroud)
我有一个帐号列表 123,345,555,777。
所以我可以得到一个存在的列表
SELECT * FROM MY_TABLE WHERE ACCNT IN (...my list...)
Run Code Online (Sandbox Code Playgroud)
现在我想完成相反的事情。
从我的列表中,我想要一个查询来显示不在表中的帐号。
所以在我的例子中,我想报告表中不存在 555 和 77。
如何在 Oracle SQL 中编写此查询?
如何有效地打乱大型(1m 到 5m 记录)表的内容?已知该列具有唯一值,但您可以假设为此目的删除了所有约束。我的头痛主要是因为我正在更新我选择的同一列。我的目标是使用 PL/SQL 做到这一点,以便我可以以编程方式执行其他操作,例如记录或更新其他表。
**Original table:**
+----+-----------+
| id | fname |
+----+-----------+
| 1 | mike |
| 2 | ricky |
| 3 | jane |
| 4 | august |
| 6 | dave |
| 9 | Jérôme |
+----+-----------+
**Possible output:**
+----+-----------+
| id | fname |
+----+-----------+
| 1 | dave |
| 2 | jane |
| 3 | mike |
| 4 | ricky |
| 6 | Jérôme | …
Run Code Online (Sandbox Code Playgroud) 当我尝试连接到MySQL数据库时出现以下错误.
违反了类型的继承安全规则:'MySql.Data.MySqlClient.MySqlProviderServices'.派生类型必须与基本类型的安全可访问性匹配,或者不太容易访问.
以下是entityframework配置:
<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=7.0.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)
在此之前我使用MySQL 6.9.9并且没有错误发生.请帮忙.
我的应用程序中有 4 个表:
最后三个表包含一个名为 的字段session_id
。
在下面的代码中,括号中的部分用于session_id
从usession
用户“awpeople”的表中获取所有值。
问题是如何将这个结果集读入一个数组并从session_id
数组结果中的所有三个表中删除。
代码:
DELETE FROM usession,
upklist,
projshar
WHERE session_id = (SELECT session_id
FROM usession
WHERE delete_session_id IS NULL
AND user_id = (SELECT user_id
FROM users
WHERE REGEXP_LIKE(USER_NAME,
'awpeople', 'i')));
Run Code Online (Sandbox Code Playgroud) 我是 Java 新手,从 docs.oracle.com 学习各种方法,但奇怪的是,他们没有提到那里描述的任何方法的时间复杂度,例如在这个页面上:https : //docs.oracle.com/ javase/7/docs/api/java/util/ArrayList.html#get(int)
有一些关于“get()”方法的信息,但没有关于复杂性的信息!我找不到合适的地方来询问在哪里可以找到有关复杂性的信息。也许有像 cplusplus.com 这样的信息,但我不知道。我在网上搜索并失败了。所以,如果这是一个愚蠢的问题,请原谅我。
如何创建一个 Oracle 正则表达式来检查给定的字符串是否包含数字和字母,并且不包含特殊字符。例如,
如果字符串类似于 'kjds327' 它必须返回 true
如果字符串是 'dkfsdsf' 或 '132564' 或 'asjv@3#34342fd' 它必须 返回 false