下午好,
我有两个列,我试图将其分为表格,memberid和总支出。当我运行以下查询时:
Select Memberid, totalspend
from Table
order by totalspend;
我的数据以我期望的方式返回。当我尝试并运行时:
Select MemberID, TotalSpend
into SampleTable
from Table
order by TotalSpend
SQL不保留排序。
到目前为止,我所做的研究表明,select into语句应该可行,但由于某种原因,它不适用。我已经尝试将Totalspend转换为float,int或varchar但仍然没有运气。
我需要对数据进行排序,以便我可以根据前x行对表进行计算。
我目前正在使用SQL Server 2017。
谢谢,
理查德
答案 0 :(得分:0)
SQL不保留排序。
这太真实了。 SQL表表示无序集。没有订购。得到它?
也就是说,您可以对数据施加排序。这有两种方法:
public class CustomType : ScriptableObject {
public int myField;
private int myProperty;
public int MyProperty {
get { return myProperty; }
set {
if (value != myProperty) {
// do stuff here
myProperty = value;
}
}
}
public void OnMyFieldChanged(int from, int to) {
// do stuff here
}
}
#if UNITY_EDITOR
[CustomEditor(typeof(CustomType))]
class CustomTypeEditor : Editor {
public override void OnInspectorGUI() {
CustomType customType = (CustomType)target;
int field = EditorGUILayout.IntField("Field", customType.myField);
if (field != customType.myField) {
customType.OnMyFieldChanged(customType.myField, field);
customType.myField = field;
}
customType.MyProperty = EditorGUILayout.IntField("Property", customType.MyProperty);
}
}
#endif
,标识列将捕获排序。严格地说,这些对表中查询的结果集没有影响。相反,它们是用于在数据中存储排序的方法。
对于结果集,无序表的真实情况也是如此。所以如果你跑:
order by
结果集无序。这意味着即使使用主键或标识列或两者,SQL Server也可以按照所需的顺序返回行。它甚至可以在不同的运行中以不同的顺序返回数据。
解决这个问题很简单。如果您想要按特定顺序排列数据,只需在查询中添加以下内容:
Select MemberID, TotalSpend
from SampleTable;
如果列上有索引,那么排序通常会使用索引(除非数据非常小),因此会产生很小的开销。