相关疑难解决方法(0)

SQL:当谈到NOT IN而不是EQUAL TO时,哪个更有效,为什么?

假设我有一组项目:

  • 项目1
  • 项目2
  • 项目3
  • 项目4
  • 项目5

可以用两种方式构造查询.首先:

SELECT * 
FROM TABLE 
WHERE ITEM NOT IN ('item1', 'item2', 'item3', 'item4','item5')
Run Code Online (Sandbox Code Playgroud)

或者,它可以写成:

SELECT * 
FROM TABLE 
WHERE ITEM != 'item1' 
  AND ITEM != 'item2' 
  AND ITEM != 'item3' 
  AND ITEM != 'item4' 
  AND ITEM != 'item5'
Run Code Online (Sandbox Code Playgroud)
  1. 哪个更有效,为什么?
  2. 一个人变得比另一个人更有效率?换句话说,如果有500件商品怎么办?

我的问题与PostgreSQL有关.

sql postgresql

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

左连接和左外连接有什么区别?

我创建了2个表

CREATE TABLE table1(customerName VARCHAR(20),custid NUMBER ,order_id NUMBER ,price NUMBER );
CREATE TABLE table2(id NUMBER ,salary NUMBER );
Run Code Online (Sandbox Code Playgroud)

现在,我尝试使用查询

SELECT t1.customername,t1.custid,t2.salary FROM table1 t1 left join table2 t2 ON t1.custid = t2.id;
SELECT t1.customername,t1.custid,t2.salary FROM table1 t1 left outer join table2 t2 ON t1.custid = t2.id;
Run Code Online (Sandbox Code Playgroud)

但我得到了相同的输出.他们在工作中内部有什么区别吗?或者都是一样的!?

sql oracle join left-join outer-join

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

为什么我的查询返回不正确的结果?

大约两周前我最近问了一个类似的问题,但是我没有看到我的问题以我需要的方式运行.

我有一个从2个表中选择的查询; 门票和回复.我正在从故障单表中选择信息,并且我从回复表中选择了存储有票证ID的信息.这就是我的问题.

我的查询只显示回复超过0的票证,但我需要它才能显示票证信息,即使它没有任何回复.

我想知道(如果可能的话)是否有任何方法可以解决我的问题,如果有办法让它比我现在拥有它更简单.

现在它有点乱,但这是我的代码,用于查询和显示故障单和回复.

 if(isset($_GET['id']) && is_numeric($_GET['id'])) {
    $id = trim($_GET['id']);
    $i = "";

    $ticket = $db->conn->query("
                                SELECT * FROM tickets
                                INNER JOIN replies ON tickets.id = '$id'") or die(mysqli_error($db->conn));

    while($rows = $ticket->fetch_assoc()) {
        $i++;
        if($_SESSION['ticket_username'] == $rows['client']) {
            if($i <= 1) {
                $status = $rows['status'];
                echo '
                    <h3>'.$rows['subject'].'</h3><hr>

                    <div class="panel panel-danger">
                    <div class="panel-heading">
                        <h3 class="panel-title"><small>Created by '.$rows['client'].', '.$timeAgo->inWords($rows['created_at']).'</small></h3>
                    </div>
                    <div class="panel-body">'.nl2br($rows['message']).'</div>
                    </div>
                ';
            }

            echo '
                <div class="panel panel-info">
                    <div class="panel-heading">
                        <h3 class="panel-title"><small>Reply from '.$rows['reply_username'].', '.$timeAgo->inWords($rows['reply_time']).'</small></h3>
                    </div> …
Run Code Online (Sandbox Code Playgroud)

php mysql

6
推荐指数
1
解决办法
140
查看次数

左外连接和左连接有什么区别?结果是一样的

可能的重复:
SQL Server 中的左联接和左外联接

今天我的问题是关于oracle中的连接操作,我有两个表Table1Tabel2 现在我想对它们执行连接操作,当我执行左外连接时,我得到正确的结果,当我执行左连接时,我得到结果是正确的

在这两个操作中我得到了相同的结果,

现在我的问题是左外连接和左连接有什么区别。

为什么 Oracle 提供了 Left Outer Join,Left Join 的工作原理是一样的。

sql oracle oracle10g

5
推荐指数
0
解决办法
634
查看次数

如何在一对多关系中有效地检索数据

我遇到了一个问题,我需要运行一个Query,它应该从主表中获取一些行,并且如果主表的键存在于子表(关系一对多)中,则有一个指示符.

查询可能是这样的:

select a.index, (select count(1) from second_table b where a.index = b.index) 
from first_table a;
Run Code Online (Sandbox Code Playgroud)

这样我就可以得到我想要的结果(0 =在second_table中没有依赖记录,否则有),但我正在为从数据库中获取的每条记录运行一个子查询.我需要为至少三个类似的表得到这样一个指标,主要查询已经是至少两个表之间的一些内部联接......

我的问题是,是否有一些非常有效的方法来处理这个问题.我曾想过将记录保存在新列"first_table"中,但dbadmin不允许触发器并通过代码跟踪它是太冒险了.

解决这个问题的好方法是什么?

此查询的应用程序将用于两件事:

  1. 指示first_table中给定行的second_table中至少存在一行.它是在列表中指出它.如果第二个表中没有行,我将不会打开此指示器.
  2. 要搜索first_table中的所有行,这些行在second_table中至少有一行,或者在第二个表中没有行.

我刚发现的另一个选择:

select a.index, b.index 
from first_table a 
left join (select distinct(index) as index from second_table) b on a.index = b.index
Run Code Online (Sandbox Code Playgroud)

这样,如果b.index不存在,我将得到null(显示最终可以调整,我在这里关注查询性能).

这个问题的最终目标是为这种情况找到合适的设计方法.它经常发生,真正的应用程序是一个POS系统,以显示所有客户端,并在列表中有一个图标作为指示客户端已打开订单.

sql db2 sql-execution-plan

5
推荐指数
1
解决办法
5602
查看次数

为什么我们在 SQL 中需要一个可选关键字 OUTER?

LEFT JOIN并且LEFT OUTER JOIN工作方式完全相同。这意味着该关键字OUTER没有任何作用或者它是可选的

为什么我们要包含一个对执行没有影响的关键字?

sql sql-server

5
推荐指数
1
解决办法
1099
查看次数

pyspark use dataframe inside udf

I have two dataframes df1

+---+---+----------+
|  n|val| distances|
+---+---+----------+
|  1|  1|0.27308652|
|  2|  1|0.24969208|
|  3|  1|0.21314497|
+---+---+----------+
Run Code Online (Sandbox Code Playgroud)

and df2

+---+---+----------+
| x1| x2|         w|
+---+---+----------+
|  1|  2|0.03103427|
|  1|  4|0.19012526|
|  1| 10|0.26805446|
|  1|  8|0.26825935|
+---+---+----------+
Run Code Online (Sandbox Code Playgroud)

I want to add a new column to df1 called gamma, which will contain the sum of the w value from df2 when df1.n == df2.x1 OR df1.n == df2.x2

我尝试使用 udf,但显然从不同的数据帧中选择是行不通的,因为值应该在计算之前确定

gamma_udf = udf(lambda n: float(df2.filter("x1 = …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql pyspark

5
推荐指数
1
解决办法
3936
查看次数

如何在python pandas中实现左外连接?

我一直在尝试在python中实现左外连接。我看到左连接和左外连接之间存在细微差别。

如此链接所示:SQL Server 中的 LEFT JOIN 与 LEFT OUTER JOIN

我可以通过以下示例来了解以下内容:

import pandas as pd
import numpy as np

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
'value1': np.random.randn(4)})

df2 = pd.DataFrame({'key': ['B', 'D', 'D', 'E'],
 'value2': np.random.randn(4)})

df3 = df1.merge(df2, on=['key'], how='left')
Run Code Online (Sandbox Code Playgroud)

这总共给出了来自 df1 的记录(包括相交的记录)

但是我如何做只有来自 df1 而不在 df2 中的记录的左外连接?

不是:这只是示例。我可能在任一数据框中都有大量列(不同)。

请帮忙。

python pandas

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

使用 C# EF Core 返回具有空子级的父级。包括

我们的目标是使用 Entity Framework Core 和 .Include(...)扩展方法返回具有子级的对象集合,其中一些子级将为空。

我们有一个表的项目与C#模型项目和表位置用C#模型位置

每个项目都有一个或零个Location对象,对象如下所示:

public class Project
{
     public string LocationId { get; set; }
     public Location Location { get; set; }
}

public class Location
{
     public string LocationId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

数据库设置如下所示:

        modelBuilder.Entity<Location>(entity =>
        {
            entity.HasKey(location => location.LocationId);
            entity.ToTable("Locations");
        });
        modelBuilder.Entity<Project>(entity =>
        {                
            entity.HasOne(project => project.Location).WithMany()
            .HasForeignKey(x => x.LocationId);                
            entity.ToTable("Projects");

        });
Run Code Online (Sandbox Code Playgroud)

我们创建的查询是:

var projects = dbContext.Projects.Include(x => x.Location);
Run Code Online (Sandbox Code Playgroud)

当我们期望 …

c# entity-framework entity-framework-core

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

自然连接的维恩图

我一直在尝试完全理解 sql 连接的概念,维恩图在这方面帮助了我很多。我发现它们适用于所有类型的连接,但不适用于自然连接。

自然连接的维恩图是什么样子的?

sql database join natural-join venn-diagram

3
推荐指数
1
解决办法
1771
查看次数