我想从表格中选择结果

USER HOBBY
John Sport
Ann  Piano
Lee  Reading
Ann  Sport
Lee  Piano

我想搜寻有多个共同爱好的人。 哪个查询的性能更好,

select user from table where hobby = "sport"
intersect 
select user from table where hobby = "piano"

要么

select user from table where user in (select user from table where hobby = "piano") and where hobby = "sport"?

#1楼 票数:0

最佳性能来自于爱好=“运动”或爱好=“钢琴”的表中的选择用户

但是,如果这仅仅是一个示例,那么已经进行了许多测试,这里有一些: http : //www.execsql.com/post/intersectexcept-versus-innot-in

顺便说一句,没有比您自己尝试执行查询时间更好的解决方案了

#2楼 票数:0 已采纳

在Oracle中,假设(USER, HOBBY)是唯一的,则可以使用GROUP BY查询:

SELECT user
  FROM user_hobby
 WHERE hobby IN ('piano', 'sport')
 GROUP BY user
HAVING COUNT(*) = 2

这将使Oracle最多对数据执行一次传递,而INTERSECT将分别处理每个查询,因此需要两次传递。

  ask by Yangrui translate from so

未解决问题?本站智能推荐:

1回复

SQL相交嵌套查询

使用Oracle SQL,我试图写一个回答以下问题的语句:NFL球队的获胜次数超过分区平均数,而罚球数也超过分区平均数。 我有两个单独的语句,每个语句都可以单独返回(即:一个表,该表列出了获胜次数多于分区平均数的球队,另一个表中列出了获胜率高于平均数的球队) 但是,当我尝试将两个查询
2回复

如何在SQL中创建具有不相交关系的表

我正在尝试使用disjoint subtype relationship创建表。 例如,如果“ Supertype是家具,并且我有3种家具Subtypes :椅子,沙发和桌子。 然后: 如何选择椅子,沙发或桌子的类型?
2回复

sql与动态输入集相交

我试图弄清楚如何获得动态输入集的交集。 这是一个非常简化的示例。 company_status表: company_country表: 我想要的是仅针对某些公司的国家/地区交叉点。 如果我仅选择status = 1 ,则这是我的预期输出: 我们 如
1回复

SQL请求相交并存在

我想知道是否可以使用INTERSECT和EXIST关键字编写以下请求。 我的老师要我解决一个问题,但是我只能这样做。 使用的技术是Oracle。 表格: 一些行: 问题是通过使用INTERSECT和EXISTS来获得至少具有与计算机6“ c6”安装相同软件的计算机名
2回复

静态vs动态sql

在我的数据库中的几个地方,开发人员使用动态sql而不是静态。 他们说这是为了提高绩效。 有人能告诉我,如果动态sql能真正提高存储过程或plsql块的性能吗? 哪个会执行得更快,为什么? 1。 2。
1回复

SQL:使用vs启用

题 让我给您查询中使用的表的描述 查询1: 一切正常。 但是我对其他与之相关的查询有疑问。 查询2: 我收到错误消息 命令行错误:1列:8错误报告-SQL错误:ORA-25154:USING子句的列部分不能具有限定符25154。00000-“
2回复

在此示例中如何使用相交(可能为负)

可以说我有两个表: 现在,我想比较这两个表:给表A和B中的所有行提供相同的ID(或者说两个表中都存在ID的位置),但将其降低到12以下-这样就可以删除表A ID 0, 4, 12和表B中的ID 8, 5, 12 之后,我只剩下3行了。 现在,我想踢出所有TableA行ID ==
1回复

联盟? 相交? 或相交相交?

我正在处理一个select语句,该语句应在每个上学日返回课程。 周期重新开始之前有4个教学日。 (例如,星期一= Day1,星期二= Day2 ...星期四= Day4,星期五= Day1..etc) 有些学生在某些日子可能会有1个休假,在这种情况下,我们应该在该天/该期间组合中显示一