我必须比较表,但有一些列我不需要比较,我只知道它们(不是我必须比较的那些)所以我想从表中选择所有列,除了我不需要的列比较。
我想到了这样的事情:
SELECT 'SELECT ' || array_to_string(ARRAY(SELECT 'o' || '.' || c.column_name
FROM information_schema.columns As c
WHERE table_name = 'office'
AND c.column_name NOT IN('id', 'deleted')
), ',') || ' FROM officeAs o' As sqlstmt
Run Code Online (Sandbox Code Playgroud)
但是输出SELECT * FROM office As o
不是select a,b,c from office没有id and deleted列。
有没有人知道这个查询有什么问题?
我们正在创建一个包含 20 多个表的新数据库,我们的数据库支持:
所以,问题是:我们应该使用序列还是恒等式?哪一个更好?团队似乎在这个问题上存在分歧,所以我想听听优点和缺点,以帮助做出决定。
添加数据库详细信息:
我正在使用 SSIS 运行一个项目,现在使用 CS(区分大小写)排序规则创建新数据库,但所有查询、存储过程等都是以不区分大小写的方式编写的,因此现在 SQL Server 无法识别它们。我需要在查询中更改表名、列名……与 SQL Server 中的完全相同。
是否可以拥有包含 CI 存储过程、查询等的 CS 数据库...?
部分索引仅包括表行的子集。
我已经能够在 Oracle、DB2、PostgreSQL 和 SQL Server 中创建部分索引。例如,在 SQL Server 中,我可以将索引创建为:
create index ix1_case on client_case (date)
where status = 'pending';
Run Code Online (Sandbox Code Playgroud)
这个索引很便宜,因为它不包括表的所有 500 万行,而只包括未决案例,不应超过一千行。
我如何在 MySQL 中做到这一点?
我正在制作一个关于电影的网站,我想在电影和演员(导演、编剧和演员)之间建立关系,有两种可能性可以实现这一点,第一个是创建每个演员的表格:
CREATE TABLE director(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));
CREATE TABLE writer(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));
CREATE TABLE actor(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));
Run Code Online (Sandbox Code Playgroud)
并在每个表和电影表之间建立多对多关系。
第二种可能性是为演员表创建一个带有类型列的表,该列可以引用导演、作家或演员,并在该表和电影表之间建立多对多关系。
CREATE TABLE cast(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), type varchar(10));
Run Code Online (Sandbox Code Playgroud)
注意:对于演员,自动生成表将有一些附加列:character_name、role...
那么对于这种情况哪种可能性更好?
如果我们考虑三个单列表,每个表有两行:A =(1,2),B =(2,3),C =(3,4)。然后,如果我们试图UNION与INTERSECT一起使用括号,结果是相当一致:
(select * from a union select * from b) intersect select * from c -> 3select * from a union (select * from b intersect select * from c) -> 1、2、3但是简单明了呢...
select * from a union select * from b intersect select * from c ?我已经在几个数据库(SQL Fiddle)上进行了尝试,根据经验,我得到的是:
你们知道这方面是否有正式定义吗?我略过了SQL-92规范,但在该主题上找不到任何东西。
在将一些数据库列映射到 Java 类时,我偶然发现了这个不起眼的SQL-92 标准类型(据我所知由 PostgreSQL、H2 和 HyperSQL 实现)。我从未使用过它,但我想了解如果我找到它,如何清楚地将它映射到 Java 类型。
以下是我可以看到的变体:
情况A:TIME类型,例如15:20:01。这是“当地时间”。时区对于应用程序来说是显而易见的,因此数据库不会记录它。
情况 B:TIME带有偏移量的 ,如 中15:20:01+04:00。它代表“世界时间”。这个时间可以简单地转换为 UTC 或任何其他世界时钟。
情况 C:TIME带有时区的 A,例如15:20:01 EDT。由于解释时间的规则很大程度上取决于具体的日期,如果没有日期,我就无法真正理解它。但是,如果我添加日期,它就会变成TIMESTAMP,那就完全不同了。
那么,SQL 标准是否弄错了?或者也许“带有时区的时间”应该始终解释为“带有偏移量的时间”(情况 B)?
@Deprecated注释有什么特别之处我无法重现吗?
我需要创建一个类似于@Deprecated在 Eclipse 和构建时生成警告的注释。当我标记一个方法时,@Deprecated我会收到很好的警告。例如,如果我有一个旧方法(出于兼容性原因我可能仍然保留):
@Deprecated
public List<Account> getClientAccounts(final int clientId) {
// Implement search...
}
Run Code Online (Sandbox Code Playgroud)
然后,如果我尝试在 Eclipse 中使用它,我可以看到它带有删除线,并且左侧栏中有一个黄色图标:
此外,在构建时,我可以看到:
[警告] app1/src/test/java/com/app1/MyApp.java: app1/src/test/java/com/app1/MyApp.java 使用或覆盖已弃用的 API。
现在,根据我无法控制的外部因素(例如缺少数据库索引),有些方法不是最佳的,我想用我全新的@NonOptimal注释清楚地标记它们。我需要增加问题的可见性。到目前为止,我有:
@Retention(RUNTIME)
@Target(METHOD)
// What else here?
public @interface NonOptimal {
}
Run Code Online (Sandbox Code Playgroud)
如何创建此注释?
我有一张桌子:客户和列= [名称,姓氏,语言]
我想将所有语言列的值都更新为大写,该怎么办?
我见过upper()方法,但是它用于选择操作。我需要更新。
我不确定这是怎么称呼所以我拍了一张照片.
我想显示一个用户列表,当有人点击其中一个用户时,下面会显示一些细节.再次点击它应该再次隐藏.理想情况下有一些滑动动画.它不应该覆盖列表的其余部分,所以其他一切都必须向下移动.
我希望你明白我的意思.
有人可以告诉我我应该谷歌或有一个例子吗?
sql ×8
database ×3
postgresql ×3
java ×2
mysql ×2
android ×1
annotations ×1
ansi-sql-92 ×1
db2 ×1
indexing ×1
intersect ×1
sql-server ×1
t-sql ×1
type-mapping ×1
union ×1