我想知道我是否有这样的连接查询 -
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)
当我考虑性能时,哪两个查询会更快,为什么?
还有一段时间我应该更喜欢一个吗?
对不起,如果这是太微不足道,以前问过,但我很困惑.此外,如果你们可以建议我用来测量两个查询的性能的工具,那将是很棒的.非常感谢!
怎么做?
这个问题的前标题是" 在带有子查询的复杂查询中使用等级(@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 …
我正在尝试执行此查询:
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,但仍然没有给出任何结果.
此代码不适用于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(我尝试了语法,但它也不起作用).
使用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解决方法(使用多个查询).
我正在尝试这样的查询:
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) 我真的很感激你的帮助.
可能这是一个非常简单的问题需要解决 - 但我不是那个...... ;-)
我在SQL Server中有两个表:
现在我想选择一组特定的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错误 - >子查询具有多个值
感谢帮助
我有这个我在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查询:
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'.
我认为我的代码很简单,但我做不到.我究竟做错了什么?
我试图在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中的子查询不能引用相同查询级别的其他关系".所以我被卡住了.有谁知道我怎么能做到这一点?
谢谢
subquery ×10
sql ×7
mysql ×3
postgresql ×3
arel ×1
in-subquery ×1
insert ×1
join ×1
left-join ×1
oracle ×1
performance ×1
rank ×1
select ×1
sql-delete ×1
sql-server ×1