0

クエリを追加したいORDER BYのですが、日付フィールドがフォームにあるため、機能しません2013-02-27 00:00:00。一緒に使用できるように、その場で変換するにはどうすればよいORDER BYですか?これが私の質問です:

    $sql = "SELECT * FROM $wpdb->posts"; 
    $sql .= " INNER JOIN $wpdb->postmeta ON $wpdb->posts.ID = $wpdb->postmeta.post_id";
    $sql .= " WHERE $wpdb->posts.post_type = 'task'";
    $sql .= " AND $wpdb->postmeta.post_id IN ( SELECT `post_id` FROM $wpdb->postmeta WHERE $wpdb->postmeta.meta_key = '_completed' AND $wpdb->postmeta.meta_value = '0' )";
    $sql .= " AND $wpdb->postmeta.post_id IN ( SELECT `post_id` FROM $wpdb->postmeta WHERE $wpdb->postmeta.meta_key = '_assigned' AND $wpdb->postmeta.meta_value = '%s' )";
    $sql .= " GROUP BY $wpdb->postmeta.post_id";
    $sql .= " ORDER BY $wpdb->postmeta._due ASC";

    $tasks = $wpdb->get_results( sprintf( $sql, $user_id ) );

問題のフィールドは_dueテーブルにありますwp_postmeta。これはWordpress用ですが、MYSQLの質問なので、ここで質問したいと思いました。ありがとう!

4

1 に答える 1

3

これは、GROUP BY(誤って)を使用していて、MySQLがソートの順序を保証していないためです。機能を正しく使用すると、目的の結果が得られます。

MySQL拡張機能をGROUP BY参照してください。

于 2013-02-20T23:45:57.143 に答える