diff --git a/data/queue.py b/data/queue.py
index 3f4a30f50..2a0359a58 100644
--- a/data/queue.py
+++ b/data/queue.py
@@ -155,12 +155,11 @@ class WorkQueue(object):
         avail = self._available_jobs_not_running(now, name_match_query, running)
         db_item = avail.order_by(QueueItem.id).get()
       else:
-        # If we don't require ordering, we can forego this whole subquery and
-        # instead try and grab any available item. We ORDER BY randomly in order
-        # to prevent races.
-        db_item = (self
-                   ._available_jobs(now, name_match_query)
-                   .limit(50)
+        # If we don't require ordering, we grab a random item from any of the first 50 available.
+        subquery = self._available_jobs(now, name_match_query).limit(50).alias('j1')
+        db_item = (QueueItem
+                   .select()
+                   .join(subquery, on=QueueItem.id == subquery.c.id)
                    .order_by(db_random_func())
                    .get())