标签: sql

内连接vs其中

是否存在性能差异(在oracle中)

Select * from Table1 T1 
Inner Join Table2 T2 On T1.ID = T2.ID
Run Code Online (Sandbox Code Playgroud)

Select * from Table1 T1, Table2 T2 
Where T1.ID = T2.ID
Run Code Online (Sandbox Code Playgroud)

sql oracle performance

251
推荐指数
10
解决办法
11万
查看次数

如何在PostgreSQL中设置自动增量主键?

我在PostgreSQL中有一个包含22列的表,我想添加一个自动增量主键.

我试图创建一个名为idBIGSERIAL类型的列,但pgadmin响应错误:

ERROR: sequence must have same owner as table it is linked to.
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?如何在PostgreSQL中添加创建自动递增主键而无需再次重新创建表?

sql postgresql

251
推荐指数
6
解决办法
43万
查看次数

MySQL SELECT只是非空值

是否可以执行只接受NOT NULL值的select语句?

现在我正在使用这个:

SELECT * FROM table
Run Code Online (Sandbox Code Playgroud)

然后我必须用php循环过滤掉空值.

有办法吗?

SELECT * (that are NOT NULL) FROM table
Run Code Online (Sandbox Code Playgroud)

现在,当我选择*我得到val1,val2,val3,null,val4,val5,null,null等....但我只是想得到我的结果中不为null的值.这可能没有过滤循环吗?

mysql sql select notnull

249
推荐指数
5
解决办法
62万
查看次数

在一列上选择DISTINCT

使用SQL Server,我有......

ID  SKU     PRODUCT
=======================
1   FOO-23  Orange
2   BAR-23  Orange
3   FOO-24  Apple
4   FOO-25  Orange
Run Code Online (Sandbox Code Playgroud)

我想要

1   FOO-23  Orange
3   FOO-24  Apple
Run Code Online (Sandbox Code Playgroud)

这个问题不是让我在那里.如何在一列上选择DISTINCT?

SELECT 
[ID],[SKU],[PRODUCT]
FROM [TestData] 
WHERE ([PRODUCT] = 
(SELECT DISTINCT [PRODUCT] FROM [TestData] WHERE ([SKU] LIKE 'FOO-%')) 
ORDER BY [ID]
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server distinct

248
推荐指数
7
解决办法
38万
查看次数

列的原因在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中

可能重复:
SQL中的GROUP BY /聚合函数混淆

我收到了一个错误 -

列'Employee.EmpID'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.


select loc.LocationID, emp.EmpID
from Employee as emp full join Location as loc 
on emp.LocationID = loc.LocationID
group by loc.LocationID 
Run Code Online (Sandbox Code Playgroud)

这种情况符合Bill Karwin给出的答案.

修正以上,适合ExactaBox的答案 -

select loc.LocationID, count(emp.EmpID) -- not count(*), don't want to count nulls
from Employee as emp full join Location as loc 
on emp.LocationID = loc.LocationID
group by loc.LocationID 
Run Code Online (Sandbox Code Playgroud)

原始问题 -

对于SQL查询 -

select *
from Employee as emp full join Location as loc 
on emp.LocationID = loc.LocationID
group by (loc.LocationID) …
Run Code Online (Sandbox Code Playgroud)

sql group-by aggregate-functions

248
推荐指数
4
解决办法
60万
查看次数

SQL Server中的INNER JOIN与LEFT JOIN性能

我已经为9个表创建了使用INNER JOIN的SQL命令,无论如何这个命令需要很长时间(超过五分钟).因此,我的民众建议我将INNER JOIN更改为LEFT JOIN因为LEFT JOIN的表现更好,尽管我所知道的第一次.我改变后,查询的速度显着提高.

我想知道为什么LEFT JOIN比INNER JOIN快?

我的SQL命令如下所示: SELECT * FROM A INNER JOIN B ON ... INNER JOIN C ON ... INNER JOIN D依此类推

更新: 这是我的架构的简要说明.

FROM sidisaleshdrmly a -- NOT HAVE PK AND FK
    INNER JOIN sidisalesdetmly b -- THIS TABLE ALSO HAVE NO PK AND FK
        ON a.CompanyCd = b.CompanyCd 
           AND a.SPRNo = b.SPRNo 
           AND a.SuffixNo = b.SuffixNo 
           AND a.dnno = b.dnno
    INNER JOIN exFSlipDet h -- PK = CompanyCd, FSlipNo, FSlipSuffix, FSlipLine
        ON a.CompanyCd …
Run Code Online (Sandbox Code Playgroud)

sql sql-server performance

247
推荐指数
7
解决办法
29万
查看次数

为什么有人在SQL子句中使用WHERE 1 = 1 AND <conditions>?

为什么有人会WHERE 1=1 AND <conditions>在SQL子句中使用(通过串联字符串获得的SQL,视图定义)

我已经在某处看到这将用于防止SQL注入,但它似乎非常奇怪.

如果有注射WHERE 1 = 1 AND injected OR 1=1会产生相同的结果injected OR 1=1.

稍后编辑:视图定义中的用法如何?


谢谢您的回答.

但是,我不明白为什么有人会使用这种结构来定义视图,或者在存储过程中使用它.

以此为例:

CREATE VIEW vTest AS
SELECT FROM Table WHERE 1=1 AND table.Field=Value
Run Code Online (Sandbox Code Playgroud)

sql dynamic-sql

246
推荐指数
13
解决办法
19万
查看次数

表中主键的最佳实践是什么?

在设计表时,我养成了一个习惯,就是让一个列是唯一的,并且我制作了主键.这取决于要求以三种方式实现:

  1. 自动递增的标识整数列.
  2. 唯一标识符(GUID)
  3. 可用作行标识符列的短字符(x)或整数(或其他相对较小的数字类型)列

数字3将用于相当小的查找,主要是可能具有唯一静态长度字符串代码的读取表,或者诸如年份或其他数字的数字值.

在大多数情况下,所有其他表将具有自动递增整数或唯一标识符主键.

问题:-)

我最近开始使用没有一致行标识符的数据库,主键目前在各个列上进行聚类.一些例子:

  • 日期时间/字符
  • 日期时间/整数
  • 日期时间/ VARCHAR
  • 炭/ NVARCHAR/nvarchar的

这有一个有效的案例吗?我总是会为这些案例定义一个标识或唯一标识符列.

此外,还有许多表没有主键.这有什么正当理由?

我试图理解为什么桌子的设计原样,对我来说这似乎是一个很大的混乱,但也许有充分的理由.

第三个问题可以帮助我解释答案:在使用多列构成复合主键的情况下,这种方法与代理/人工密钥相比有特定的优势吗?我主要考虑的是性能,维护,管理等方面?

sql database sql-server relational

245
推荐指数
11
解决办法
15万
查看次数

SQL离开连接与FROM行上的多个表?

大多数SQL方言都接受以下查询:

SELECT a.foo, b.foo
FROM a, b
WHERE a.x = b.x

SELECT a.foo, b.foo
FROM a
LEFT JOIN b ON a.x = b.x
Run Code Online (Sandbox Code Playgroud)

现在很明显,当您需要外连接时,需要第二种语法.但是在进行内部连接时,为什么我更喜欢第二种语法(反之亦然)?

sql syntax join

245
推荐指数
7
解决办法
25万
查看次数

在控制台中禁用Rails SQL日志记录

当我在控制台中执行命令时,有没有办法禁用SQL查询日志记录?理想情况下,如果我可以禁用它并使用控制台中的命令重新启用它,那将是很棒的.

我正在尝试调试一些东西并使用"puts"打印出一些相关数据.但是,sql查询输出使其难以阅读.


编辑: 我找到了另一个解决方案,因为将记录器设置为nil有时会引发错误,如果我的代码以外的其他东西试图调用logger.warn

nil您可以将记录器的级别设置为,而不是将记录器设置为1.

ActiveRecord::Base.logger.level = 1 # or Logger::INFO
Run Code Online (Sandbox Code Playgroud)

sql console ruby-on-rails

245
推荐指数
6
解决办法
9万
查看次数