A. sql優先排序
select ad_id as id from info_ad where end_time='沒有過期'
union all
select t.ad_id from
(select ad_id from info_ad where end_time='過期' order by rand()) t limit 30;
mysql版的,測試過了,可行。
子查詢是對所有過期的做一次隨機排序,而且必須要子查詢,不然不能取到隨機的數據。
好像SQL SERVER也有個rand()函數的吧,而且top 也可以代替limit的吧,看你怎麼用了 。
B. SQL語句中,如果有group by 和order by兩個語句,是先分組還是先排序
先進行分組處理。
Group By 和 Having, Where ,Order by這些關鍵字是按照如下順序進行執行的:Where, Group By, Having, Order by。
首先where將最原始記錄中不滿足條件的記錄刪除(所以應該在where語句中盡量的將不符合條件的記錄篩選掉,這樣可以減少分組的次數)
然後通過Group By關鍵字後面指定的分組條件將篩選得到的視圖進行分組
接著系統根據Having關鍵字後面指定的篩選條件,將分組視圖後不滿足條件的記錄篩選掉
最後按照Order By語句對視圖進行排序,這樣最終的結果就產生了。
在這四個關鍵字中,只有在Order By語句中才可以使用最終視圖的列名,如:
SELECT FruitName, ProctPlace, Price, ID AS IDE, Discount
FROM T_TEST_FRUITINFO
WHERE (ProctPlace = N'china')
ORDER BY IDE
這里只有在ORDER BY語句中才可以使用IDE,其他條件語句中如果需要引用列名則只能使用ID,而不能使用IDE。
C. sql語句中的關鍵字有優先順序,以及執行順序嗎
可以去找些資料看看, mysql的索引、查詢優化...
執行順序
D. 如何對sql檢索出的數據進行多列排序
SQL多列排序可以在ORDER BY 子句里列出多個列進行排序,列與列之間用逗號隔離,標注關鍵字ASC為升序排序、DESC為降序排序,省略升/降排序關鍵字則默認為升序排序。排序欄位列表中越靠前的欄位其排序優先順序別越高。請注意對SQL語句除了對列實施排序外,還可以對基於列的計算表達式實施排序。
請參考下列SQL多列排序語句:
select * from t1 order by col1,col5 desc,col3;
此例以col1第一優先升序排序,col5第二優先降序排序,col3第三優先升序排序。
E. sql中排序要怎麼寫
1.語法:
SELECT "欄位名"
FROM "表格名"
[WHERE "條件"]
ORDER BY "欄位名" [ASC, DESC];
2.注意事項:先分組再排序,運用的是ORDER BY,後面加的是你要按什麼排序,如果按照升序可以不用寫或者加上ASC;如果是降序,要加上DESC。
3.例子:SELECT id FROM user ORDER BY id;
F. SQL 排序的優先順序問題
SELECT*FROMAORDERBYnamelike'bbb%'DESC;
G. sql server中運算符的優先等級從高到低的排列是怎樣的
大到小依次是 算數運算符、邏輯運算符、比較運算符、賦值運算符。
H. 請教:sql語句,優先排序問題。
sellect * from chengjidan where stdname=優先顯示某個學生
union sellect * from chengjidan stdname<>優先顯示某個學生 order by id
I. 如何用sql語句排序一個倒一個順
例如,按學生學號升序排列,學生成績按降序排列
sql是這樣寫的:select * from tab order by id,scroe desc
sql server會根據order by跟id scroe 先後進行排序,
先根據id升序排序,再根據scroe降序排序,也許你會發現scroe列的數據不是按照降序排列
這就是優先排序的原則,order by 後面誰在前,誰就優先排序
你可以仔細看看相同的id(你可以插入幾行相同的id,不同scroe),score就是按照降序排列的