如何编写SQL查询,根据条件对结果进行排序?
这个问题基于我的观点,使用了所有相同的基本信息。该链接显示了我的表布局和简单联接的基本要点 我想编写另一个查询,从表1中选择每个记录,并简单地按照值是否小于链接阈值对它们进行排序 我再次感谢任何愿意尝试这一点的人。数据库从来都不是我的强项。如何编写SQL查询,根据条件对结果进行排序?,sql,sql-order-by,Sql,Sql Order By,这个问题基于我的观点,使用了所有相同的基本信息。该链接显示了我的表布局和简单联接的基本要点 我想编写另一个查询,从表1中选择每个记录,并简单地按照值是否小于链接阈值对它们进行排序 我再次感谢任何愿意尝试这一点的人。数据库从来都不是我的强项。选择t1.LogEntryID,t1.Value,t1.ThresholdID, SELECT t1.LogEntryID, t1.Value, t1.ThresholdID, case when t1.Value < t2.threshold
选择t1.LogEntryID,t1.Value,t1.ThresholdID,
SELECT t1.LogEntryID, t1.Value, t1.ThresholdID,
case when t1.Value < t2.threshold then 1 else 0 end as Rank
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.ThresholdID = t2.ThresholdID
ORDER By Rank
当t1.值
如果您想要相反的顺序,可以将
DESC
添加到ORDER By Rank
之后。类似于OrbMan给出的答案,但我更喜欢在ORDER By中明确显示大小写,这样您就不会被迫按列显示订单
SELECT
t1.LogEntryID
,t1.Value
,t1.ThresholdID
FROM
Table1 t1
JOIN Table2 t2 ON t2.ThresholdID = t1.ThresholdID
ORDER BY
CASE WHEN t1.Value < t2.threshold
THEN 1
ELSE 0
END ASC
选择
t1.LogEntryID
,t1.0
,t1.ThresholdID
从…起
表1 t1
在t2.ThresholdID=t1.ThresholdID上连接表2 t2
订购人
t1.值
只是一个想法,但您不能使用“阈值”作为返回列之一吗
如果您这样做了(列是数字的),您还可以看到该值离阈值有多近(或有多远)
任何正值或0都会低于阈值,任何负值都不会。您需要手动添加所需的其余字段,但无论如何您都应该这样做。我不理解这个注释,查询显示了表1中的所有记录,这就是要求。我提到这些表中的字段比我显示的要多得多。我相信戴夫是指这个。最后:我认为你的假设是正确的,奥伯曼。我们故意没有在表1中添加“排名”列,因为我们计划在查询中动态计算它。但是,如果我们只需要手动循环所有数据来找出它,这对我们有什么好处呢?让它在添加的列中返回是完美的。这样,它只有在我们需要的时候才会出现,而且保证是准确的。OrbMan的解决方案为您提供了一种快速检查每行条件的方法,但是,如果他想要完整的结果集,这可能是他需要的信息。在我看来,这一行更干净。。。除了连接类型之外,我不确定执行计划中的主要区别是什么。我不太在乎表2的结果。我只是想让表1中的每一行按是否通过给定的阈值排序。我假设您想查看输出中的排名,因为如果不显示表2中的记录,您就无法知道哪些行的t1.Value