diff --git a/src/database/queue.c b/src/database/queue.c
index cfb55e007b66132320e051d74dbfbb11a0367359..b12f602edb3610c8328c941f81d913924bb16a9c 100644
--- a/src/database/queue.c
+++ b/src/database/queue.c
@@ -280,15 +280,15 @@ database_queue_next(sqlite3 *db, char filepath[PATH_MAX])
 {
     static const char *SQL_STMT =
         "SELECT file_path, position, RANDOM()"
-        "  FROM kara"
-        "  JOIN queue_ ON kara.id = queue_.kara_id"
-        "  JOIN queue_state"
-        "    ON current IS NULL"
-        "    OR (CASE WHEN (SELECT single FROM queue_state LIMIT 1) = 1 THEN position = current"
-        "             WHEN (SELECT random FROM queue_state LIMIT 1) = 1 THEN position <> current"
-        "             ELSE position > current END)"
-        "  ORDER BY CASE WHEN (SELECT random FROM queue_state LIMIT 1) = 1 THEN RANDOM() ELSE 2 END"
-        "  LIMIT 1";
+        " FROM kara"
+        " JOIN queue_ ON kara.id = queue_.kara_id"
+        " JOIN queue_state"
+        "  ON available = 1 AND current IS NULL OR"
+        "  CASE WHEN (SELECT single FROM queue_state) = 1 THEN position = current"
+        "       WHEN (SELECT random FROM queue_state) = 1 THEN position <> current"
+        "       ELSE position > current END"
+        " ORDER BY CASE WHEN (SELECT random FROM queue_state) = 1 THEN RANDOM() ELSE 2 END"
+        " LIMIT 1";
     char SQL_UPDATE[LKT_MAX_SQLITE_STATEMENT];
     bool status = false;
     int code = SQLITE_OK, id;
@@ -345,7 +345,7 @@ database_queue_prev(sqlite3 *db, char filepath[PATH_MAX])
     static const char *SQL_STMT =
         "SELECT file_path, position "
         "  FROM kara"
-        "  JOIN queue_ ON kara.id = queue_.kara_id"
+        "  JOIN queue_ ON kara.id = queue_.kara_id AND available = 1"
         "  JOIN queue_state ON CASE "
         "    WHEN (SELECT single FROM queue_state LIMIT 1) = 1 THEN position = current"
         "    ELSE queue_.position < queue_state.current"