diff --git a/wp-includes/comment.php b/wp-includes/comment.php
index a4cc7e2..5c5f737 100644
--- a/wp-includes/comment.php
+++ b/wp-includes/comment.php
@@ -303,16 +303,24 @@ public function query( $query_vars ) {
 			return $cache;
 		}
 
-		$status = $this->query_vars['status'];
-		if ( 'hold' == $status ) {
-			$approved = "comment_approved = '0'";
-		} elseif ( 'approve' == $status ) {
-			$approved = "comment_approved = '1'";
-		} elseif ( ! empty( $status ) && 'all' != $status ) {
-			$approved = $wpdb->prepare( "comment_approved = %s", $status );
-		} else {
-			$approved = "( comment_approved = '0' OR comment_approved = '1' )";
+		$status_queries = array();
+		$statuses       = empty( $this->query_vars['status'] ) ? array( 'all' ) : (array) $this->query_vars['status'];
+
+		foreach ( $statuses as $s ) {
+			if ( 'hold' == $s || '0' == $s ) {
+				$status_queries['hold'] = "comment_approved = '0'";
+			} elseif ( 'approve' == $s  || '1' == $s ) {
+				$status_queries['approve'] = "comment_approved = '1'";
+			} elseif ( 'all' == $s ) {
+				$status_queries['hold'] = "comment_approved = '0'";
+				$status_queries['approve'] = "comment_approved = '1'";
+			} else  {
+				$status_queries[ $s ] = $wpdb->prepare( "comment_approved = %s", $s );
+			}
 		}
+
+		$approved = "( " . implode( " OR ", $status_queries ) . " )";
+
 		$order = ( 'ASC' == strtoupper( $this->query_vars['order'] ) ) ? 'ASC' : 'DESC';
 
 		if ( ! empty( $this->query_vars['orderby'] ) ) {
@@ -466,6 +474,7 @@ public function query( $query_vars ) {
 		if ( $groupby ) {
 			$groupby = 'GROUP BY ' . $groupby;
 		}
+
 		$query = "SELECT $fields FROM $wpdb->comments $join WHERE $where $groupby ORDER BY $orderby $order $limits";
 
 		if ( $this->query_vars['count'] ) {
