2016-08-19 2 views
1

結果がすでに生成された後にmySQL sqlを使用する方法はありますか。結果がすでに生成された後にsqlを再ソートする

私は基本的に表示したい結果を得るsqlを持っていますが、ソートする方法は結果自体に依存します。明確にするために擬似コードを提供しています。

$sql = "SELECT * FROM post_info WHERE poster = 'login_user' OR replier = 'login_user'"; 

if ('login_user' == $row['poster']) { //sort by one column } 
else { //sort by a different column } 
+0

ちょうどsudoのコード..私の実際のコードは、より複雑ですが、私はそれがまた私の実際のコードを動作させるために把握することができるようになります上記のような何かをする方法を見つけ出すことができれば... –

+0

はなぜ値をフェッチした後にもう一度ソートする必要がありますか?あなたが実際にクエリを実行する前に、あなたのカスタムソートを追加してください。 – Ghost

+0

基本的に私はposterReadまたはreplierReadカラムを持っていません。まず最初に "私はすべての結果を同じグループとして欲しいと思っています。私はmysqlコマンドを新しくしています。 –

答えて

8

あなたはCASE文でクエリの中から条件付きで並べ替えることができます。

ORDER BY (CASE 
    WHEN poster = 'login_user' THEN col1 
    ELSE col2 
END) 
+0

これは美しさを働かせてくれました。 –

0
$sql = "SELECT *, if(poster='login_user', 1, 0) as idx FROM post_info WHERE poster = 'login_user' OR replier = 'login_user' order by idx desc"; 

または

$sql = "SELECT * FROM post_info WHERE poster = 'login_user' UNION SELECT * FROM post_info WHERE replier = 'login_user'"; 
関連する問題