我有一个下面的db表结构:
Tablename : agency_mst
Fields:
id
name
is_premium
date_added
我想对数据进行排序,以便 is_premium = 1 的代理商首先出现,其余数据按 date_added desc 顺序排序。
但is_premium = 1记录也应按
我已部分构建此查询,但不确定如何过滤特定的数据集。以下是该查询:
SELECT * FROM agency_mst
ORDER BY is_premium DESC, date_added DESC
答案 0 :(得分:1)
怎么样
import {render} from 'react-dom';
import {Provider} from 'react-redux';
import { Router, browserHistory } from 'react-router';
import Sstore from './store/configureStore.js';
import routes from './routes';
import {loadMovies} from './actions/movieActions.js';
const store = Sstore;
store.dispatch(loadMovies());
render(
<Provider store={store}>
<Router history={browserHistory} routes={routes} />
</Provider>,
document.getElementById('app')
);
#routes.js #
import React from 'react';
import { Route, IndexRoute } from 'react-router';
import Home from './components/Home.js';
export default (
<Route path="/" component={Home}>
</Route>
);`
这将对匹配的行使用随机排序,然后将其他行放在最后,并按日期排序。
但要注意性能。任何变体中的SELECT *
FROM agency_mst
ORDER BY IF(is_premium=1, RAND(), -1.0), date_added DESC
都是具有多行的表中臭名昭着的性能反模式。
答案 1 :(得分:0)
select t1.id,t1.name,t1.is_premium,t1.date_added from
(select (ROW_NUMBER() over (order by id))* cast(CRYPT_GEN_RANDOM(10) as int) RND,* from agency_mst) t1
order by t1.RND
答案 2 :(得分:0)
SELECT id, name, is_premium , date_added ,if(is_premium ,rand()*-15,0) as first_order FROM agency_mst ORDER BY first_order, date_added DESC
检查这个使用rand()* - 15你得到-velue它先显示并保持为0,这将是按date_added排序