标签: sql-subselect

FetchMode Join与SubSelect

我有两个表Employee和Department以下是两个表的实体类

Department.java
@Entity
@Table(name = "DEPARTMENT")
public class Department {
    @Id
    @Column(name = "DEPARTMENT_ID")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer departmentId;
    @Column(name = "DEPARTMENT_NAME")
    private String departmentName;
    @Column(name = "LOCATION")
    private String location;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "department", orphanRemoval = true)
    @Fetch(FetchMode.SUBSELECT)
    //@Fetch(FetchMode.JOIN)
    private List<Employee> employees = new ArrayList<>();
}


Employee.java
@Entity
@Table(name = "EMPLOYEE")
public class Employee {
    @Id
    @SequenceGenerator(name = "emp_seq", sequenceName = "seq_employee")
    @GeneratedValue(generator = "emp_seq")
    @Column(name = "EMPLOYEE_ID")
    private Integer employeeId;
    @Column(name = "EMPLOYEE_NAME")
    private String …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa join sql-subselect

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

如何证明在SQL中使用子选择查询会破坏服务器的性能

我的工作之一就是维护我们的数据库,通常我们在获取报告和工作时会遇到性能不足的麻烦.
当我开始查看我们的ERP发送到数据库的查询时,我在主查询中看到了很多完全不必要的子查询.
因为我不是我们使用的程序创建者的开发人员,所以当我批评他们的代码和工作时,他们并不喜欢.让我们说他们不把我的评论作为严肃的陈述.所以我问你几个关于SQL中subselect的问题

subselect是否需要花费更多时间才能留下外连接?
是否存在任何博客,文章或我推荐不使用的任何内容?
我怎样才能证明,如果我们在查询中避免使用subselesct查询会更快?

我们的数据库服务器是MSSQL2005

sql performance database-design sql-subselect

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

我可以在子查询中使用多个列吗?

我想显示EMPLOYEES表中所有员工的姓名,他们正在从表中处理三个以上的项目PROJECT.

PROJECTS.PersonID是一个外键引用EMPLOYEES.ID:

SELECT NAME, ID 
FROM EMPLOYEES
WHERE ID IN
    ( 
    SELECT PersonID, COUNT(*)
    FROM PROJECTS
    GROUP BY PersonID
    HAVING COUNT(*) > 3
    )
Run Code Online (Sandbox Code Playgroud)

我可以在子查询中同时拥有两者PersonID,COUNT(*)还是只能有一列?

sql sql-subselect

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

SQL Sub-Select,仅显示非零项

我一直在提问,以获得我公司要求的SQL查询的最终结果.我终于得到了最初要求的最终结果,但他们想要更多.

我的公司希望我使查询仅显示带有移动的值(已售出,已购买或已调整).我不知道如何使这项工作,或在哪里看.

SET ARITHABORT OFF
SET ANSI_WARNINGS OFF
SELECT
[UPC]=t1.F01,
COALESCE((SELECT SUM (COALESCE (X.F64, 0)) FROM [STORESQL].[dbo].[RPT_ITM_D] X WHERE (X.F254>='2011-10-1' and X.F254<='2011-11-11') and (X.F1034 = 3) AND X.F01 = T1.F01 Group by X.F01,X.F1034),0) AS [Total QTY Sold],
COALESCE((SELECT SUM (COALESCE (X.F65, 0)) FROM [STORESQL].[dbo].[RPT_ITM_D] X WHERE (X.F254>='2011-10-1' and X.F254<='2011-11-11') and (X.F1034 = 3) AND X.F01 = T1.F01 Group by X.F01,X.F1034),0) AS [Total Amount Sold],
COALESCE((SELECT SUM (COALESCE (X.F1301, 0)) FROM [STORESQL].[dbo].[RPT_ITM_D] X WHERE (X.F254>='2011-10-1' and X.F254<='2011-11-11') and (X.F1034 = 3) …
Run Code Online (Sandbox Code Playgroud)

sql sql-subselect

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

获取每一行的列表值(来自另一个表的ID列表)

我有一个非常普通的表,带有另一个表的外键; 例如:

CREATE TABLE table_a (
  id serial NOT NULL,
  name text,
  CONSTRAINT table_a_pkey PRIMARY KEY (id)
);
CREATE TABLE table_b (
  id serial NOT NULL,
  a_id integer,       -- The foreign key
  CONSTRAINT table_b_pkey PRIMARY KEY (id),
  CONSTRAINT table_b_a_id_fkey FOREIGN KEY (a_id)
      REFERENCES table_a (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
);
INSERT INTO table_a
     VALUES (1, 'First row');
-- 2 entries in table_b which refer to the existing table_a row:
INSERT INTO table_b
     VALUES (11, …
Run Code Online (Sandbox Code Playgroud)

postgresql sql-subselect

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

SELECT .. IN(..)的替代方案

我有3列的表:id(人),城市(访问过的人)和日期(他的访问).我需要选择在特定日期之间在洛杉矶市的所有人(他们的ids),他们也在其他特定日期在纽约市.

以下是我现在运行的查询示例:

SELECT DISTINCT id 
FROM places 
WHERE date >= '2011-03-18' AND 
      date < '2011-03-19' AND 
      city = 'los angeles' AND 
      id IN (SELECT DISTINCT id 
             FROM places 
             WHERE date >= '2011-03-15' AND 
                   date < '2011-03-16' AND 
                   city = 'chicago' 
             GROUP BY id);
Run Code Online (Sandbox Code Playgroud)

还有什么我也可以吗?我可以使用其他任何查询吗?这个选择太慢了.

sql select subquery sql-subselect

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

如何使用MySQL计算每组用户数?

我有一组表:

  • id - 唯一ID(主键)
  • group - 组名

我有一个用户表:

  • username - 唯一字符串(主键)
  • group_id - group.id的外键链接

在这种情况下,用户只会在一个组中.那么,在MySQL中,我如何列出组及其成员用户数?

我尝试使用subselect和count,但它最终显示所有组的相同计数.

mysql sql group-by count sql-subselect

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

获取分组结果的最后一个值 - Oracle SQL

有一个账单清单,我想知道按 ID 分组的每个客户的销售量。每张账单都有一个负责人(一个店员,要么是餐桌上的顾客),所以我想把最后一张账单的人接起来,放在结果中。

结果应该是这样的:客户 - 账单总和 - 最后一张账单的负责人。

由于 Oracle 没有“限制”选项(我们还没有 12c),我必须使用 Subselect 来完成。这意味着我无法比较客户的 ID,因为它超出了范围(请参阅下面的代码)。欢迎任何建议。

SELECT customer.NAME, SUM(bills.SUME), 
(SELECT responsibleP FROM 
    (SELECT responsibleP FROM bills b WHERE b.responsibleP = customer.id 
    order by asc billDate)
WHERE ROWNUM = 1)
FROM customer, bills
WHERE customer.id = bills.customerid    
GROUP BY customer.id;
Run Code Online (Sandbox Code Playgroud)

在这种情况下b.responsible是不是能够得到customer.id从客户表。

请随意更改标题,我不是很擅长那个,对不起!

sql oracle sql-subselect

0
推荐指数
1
解决办法
3278
查看次数