标签: subquery

SQL加入Vs SQL子查询(性能)?

我想知道我是否有这样的连接查询 -

Select E.Id,E.Name from Employee E join Dept D on E.DeptId=D.Id
Run Code Online (Sandbox Code Playgroud)

和这样的子查询 -

Select E.Id,E.Name from Employee Where DeptId in (Select Id from Dept)
Run Code Online (Sandbox Code Playgroud)

当我考虑性能时,哪两个查询会更快,为什么

还有一段时间我应该更喜欢一个吗?

对不起,如果这是太微不足道,以前问过,但我很困惑.此外,如果你们可以建议我用来测量两个查询的性能的工具,那将是很棒的.非常感谢!

sql performance join subquery sql-server-2008

100
推荐指数
7
解决办法
13万
查看次数

获取每组最高/最小<whatever>的记录

怎么做?

这个问题的前标题是" 在带有子查询的复杂查询中使用等级(@Rank:= @Rank + 1) - 它会起作用吗? "因为我正在寻找使用等级的解决方案,但现在我看到Bill发布的解决方案是好多了.

原始问题:

我正在尝试编写一个查询,该查询将根据定义的顺序从每个组获取最后一条记录:

SET @Rank=0;

select s.*
from (select GroupId, max(Rank) AS MaxRank
      from (select GroupId, @Rank := @Rank + 1 AS Rank 
            from Table
            order by OrderField
            ) as t
      group by GroupId) as t 
  join (
      select *, @Rank := @Rank + 1 AS Rank
      from Table
      order by OrderField
      ) as s 
  on t.GroupId = s.GroupId and t.MaxRank = s.Rank
order by OrderField
Run Code Online (Sandbox Code Playgroud)

表达式@Rank := @Rank + 1 …

mysql subquery rank greatest-n-per-group

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

PostgreSQL'NOT IN'和子查询

我正在尝试执行此查询:

SELECT mac, creation_date 
FROM logs 
WHERE logs_type_id=11
AND mac NOT IN (select consols.mac from consols)
Run Code Online (Sandbox Code Playgroud)

但我没有结果.我测试了它,我知道语法有问题.在MySQL中,这样的查询非常有效.我添加了一行以确保表mac中不存在一行consols,但仍然没有给出任何结果.

postgresql subquery

82
推荐指数
3
解决办法
13万
查看次数

如何从MySQL中的select中删除?

此代码不适用于MySQL 5.0,如何重新编写它以使其工作

DELETE FROM posts where id=(SELECT id FROM posts GROUP BY id  HAVING ( COUNT(id) > 1 ))
Run Code Online (Sandbox Code Playgroud)

我想删除没有唯一ID的列.我将添加大多数时间只有一个id(我尝试了语法,但它也不起作用).

mysql sql select subquery uniqueidentifier

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

activerecord中的子查询

使用SQL,我可以轻松地执行这样的子查询

User.where(:id => Account.where(..).select(:user_id))
Run Code Online (Sandbox Code Playgroud)

这会产生:

SELECT * FROM users WHERE id IN (SELECT user_id FROM accounts WHERE ..)
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用rails'3 activerecord/arel/meta_where?

我确实需要/想要真正的子查询,没有ruby解决方法(使用多个查询).

subquery arel ruby-on-rails-3.1

78
推荐指数
3
解决办法
5万
查看次数

MySQL将DELETE FROM与子查询作为条件

我正在尝试这样的查询:

DELETE FROM term_hierarchy AS th
WHERE th.parent = 1015 AND th.tid IN (
    SELECT DISTINCT(th1.tid)
    FROM term_hierarchy AS th1
    INNER JOIN term_hierarchy AS th2 ON (th1.tid = th2.tid AND th2.parent != 1015)
    WHERE th1.parent = 1015
);
Run Code Online (Sandbox Code Playgroud)

你可以告诉我,如果同一个tid有其他父母,我想删除1015的父关系.但是,这会产生语法错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS th
WHERE th.parent = 1015 AND th.tid IN (
  SELECT DISTINCT(th1.tid)
  FROM ter' at line …
Run Code Online (Sandbox Code Playgroud)

mysql sql subquery in-subquery sql-delete

77
推荐指数
6
解决办法
12万
查看次数

如何使用具有多个结果的子查询将值插入表中?

我真的很感激你的帮助.

可能这是一个非常简单的问题需要解决 - 但我不是那个...... ;-)

我在SQL Server中有两个表:

  1. 文章
  2. 价格

现在我想选择一组特定的ID并将一些条目插入到带有这些ID的价格表中.

例如(错误和不工作的SQL)

INSERT INTO prices (group, id, price) 
VALUES (7, (select articleId from article WHERE name LIKE 'ABC%'), 1.50);
Run Code Online (Sandbox Code Playgroud)

SQL错误 - >子查询具有多个值

感谢帮助

sql insert subquery

77
推荐指数
5
解决办法
15万
查看次数

FROM中的子查询必须具有别名

我有这个我在PostgreSQL中编写的查询返回错误说:

[错误]错误:第
3行:FROM(选择DISTINCT(可识别)AS made_only_recharge

这是整个查询:

SELECT COUNT (made_only_recharge) AS made_only_recharge
FROM (
    SELECT DISTINCT (identifiant) AS made_only_recharge
    FROM cdr_data
    WHERE CALLEDNUMBER = '0130'
    EXCEPT
    SELECT DISTINCT (identifiant) AS made_only_recharge
    FROM cdr_data
    WHERE CALLEDNUMBER != '0130'
)
Run Code Online (Sandbox Code Playgroud)

我在Oracle中有一个类似的查询工作正常.唯一的变化是我EXCEPT在Oracle中的位置我用MINUS关键字取代了它.我是Postgres的新手,不知道它的要求.处理这个问题的正确方法是什么?

sql oracle postgresql subquery

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

SQL LEFT JOIN子查询别名

我正在运行这个SQL查询:

SELECT wp_woocommerce_order_items.order_id As No_Commande
FROM  wp_woocommerce_order_items
LEFT JOIN 
    (
        SELECT meta_value As Prenom
        FROM wp_postmeta
        WHERE meta_key = '_shipping_first_name'
    ) AS a
ON wp_woocommerce_order_items.order_id = a.post_id
WHERE  wp_woocommerce_order_items.order_id =2198
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

#1054 - 'on子句'中的未知列'a.post_id'.

我认为我的代码很简单,但我做不到.我究竟做错了什么?

sql subquery left-join

72
推荐指数
2
解决办法
24万
查看次数

如何在select子句中使用像SQL Server这样的from子句加入Postgresql子查询?

我试图在postgresql上写下面的查询:

select name, author_id, count(1), 
    (select count(1)
    from names as n2
    where n2.id = n1.id
        and t2.author_id = t1.author_id
    )               
from names as n1
group by name, author_id
Run Code Online (Sandbox Code Playgroud)

这肯定适用于Microsoft SQL Server,但它在postegresql上完全不起作用.我稍微阅读了它的文档,似乎我可以将其重写为:

select name, author_id, count(1), total                     
from names as n1, (select count(1) as total
    from names as n2
    where n2.id = n1.id
        and n2.author_id = t1.author_id
    ) as total
group by name, author_id
Run Code Online (Sandbox Code Playgroud)

但是这会在postegresql上返回以下错误:"FROM中的子查询不能引用相同查询级别的其他关系".所以我被卡住了.有谁知道我怎么能做到这一点?

谢谢

sql sql-server postgresql subquery

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