(我希望我能提出一个更具描述性的标题…如果您可以命名我要询问的查询类型,则建议一个或编辑这篇文章)
数据库: SQL Server 2000
样本数据(假设有500,000行):
Name Candy PreferenceFactor
Jim Chocolate 1.0
Brad Lemon Drop .9
Brad Chocolate .1
Chris Chocolate .5
Chris Candy Cane .5
499,995 more rows...
请注意,具有给定“名称”的行数是无限制的。
所需的查询结果:
Jim Chocolate 1.0
Brad Lemon Drop .9
Chris Chocolate .5
~250,000 more rows...
(由于Chris对Candy Cane和Chocolate的偏爱相同,因此获得一致的结果就足够了)。
问题:
如何从数据中选择名称,糖果,其中每个结果行包含一个唯一的名称,以使所选的糖果对每个名称具有最高的PreferenceFactor。(首选快速有效的答案)。
表格上需要哪些索引?如果Name和Candy是另一个表的整数索引(除了需要一些连接),这会有所不同吗?
select c.Name, max(c.Candy) as Candy, max(c.PreferenceFactor) as PreferenceFactor
from Candy c
inner html" target="_blank">join (
select Name, max(PreferenceFactor) as MaxPreferenceFactor
from Candy
group by Name
) cm on c.Name = cm.Name and c.PreferenceFactor = cm.MaxPreferenceFactor
group by c.Name
order by PreferenceFactor desc, Name
问题内容: 我有一个名为faq_questions的表,其结构如下: 我试图建立一个给定排序顺序的查询,选择具有最高排序顺序的行。 例子: 好的,假设我为已知的排序顺序(id 4)输入了5,我需要它返回ID为3的行。由于不能保证sort_order是连续的,所以我不能只选择known_sort_order + 1。 谢谢! 问题答案: 似乎太简单了,但是看起来像您所需要的:
我有两个表和 names表有以下列表: -男性姓名从nameID 1到nameID 10 -女性姓名从nameID 11到nameID 21 -两者都从nameID 23到nameID 31 性别表有三个属性: -女性 -男性 -两者 我正在使用引导选择选项,我想显示从nameID11到nameid21的名称,如果用户从gender选择选项中选择女性,等等,这是可能的吗?我看到其他帖子,我注意到他
问题内容: 我的SQL代码如下: 等效的linq表达式是什么? 问题答案: 我第一次尝试在 来源 LINQ to SQL中的NOT IN子句
问题内容: 假设有工资表: 我目前正在使用此代码(AutoIT脚本: 因此,如果Hour_number在低小时或高小时之间,那两个查询是完美的。我需要某种查询,它基本上会执行以下操作: 然后将其重复为“默认”,因为找不到该员工。 补充:如果仅通过1个查询未找到$ Employee,是否可以尝试使用“ Default”? 问题答案: 如果仅通过1个查询未找到$ Employee,是否可以尝试使用“
问题内容: 我有两个表,它们的定义是: 我想知道未在中引用的行数,可以通过以下方式完成: 有没有更有效的方法来执行此查询? 问题答案: 升级到MySQL 5.6,可以更好地针对子查询优化半联接。 见http://dev.mysql.com/doc/refman/5.6/en/subquery- optimization.html 否则使用排除联接: 另外,请确保上面有一个索引。
我有一个Oracle表,其中包含一个主键(我们称之为)和一个字段。在我的PHP应用程序中,我有一个键列表,我想从数据库中提取所有相应的值。我可以使用类似于以下PHP代码的东西来做到这一点: 这应该可以工作,但是最多可以有200个项目长(甚至更多)。这就提出了问题: 这是最有效/稳健的方法吗 还是最好使用某种预先准备好的语句从数据库中选择一个值,并对列表中的每个键执行一次