diff --git a/includes/database/query.inc b/includes/database/query.inc
index de421b3..00dc436 100644
--- a/includes/database/query.inc
+++ b/includes/database/query.inc
@@ -1811,6 +1811,8 @@ class DatabaseCondition implements QueryConditionInterface, Countable {
    *
    * Only copies fields that implement QueryConditionInterface. Also sets
    * $this->changed to TRUE.
+   * Additional clone subqueries, because you can't use them in more than in
+   * one query.
    */
   function __clone() {
     $this->changed = TRUE;
@@ -1818,6 +1820,9 @@ class DatabaseCondition implements QueryConditionInterface, Countable {
       if ($condition['field'] instanceOf QueryConditionInterface) {
         $this->conditions[$key]['field'] = clone($condition['field']);
       }
+      elseif ($condition['value'] instanceOf SelectQueryInterface) {
+        $this->conditions[$key]['value'] = clone($condition['value']);
+      }
     }
   }
 
diff --git a/includes/database/select.inc b/includes/database/select.inc
index 43f9267..fcf8d16 100644
--- a/includes/database/select.inc
+++ b/includes/database/select.inc
@@ -1566,6 +1566,18 @@ class SelectQuery extends Query implements SelectQueryInterface {
     foreach ($this->union as $key => $aggregate) {
       $this->union[$key]['query'] = clone($aggregate['query']);
     }
+    // Additional clone subqueries, because you can't use them in more than in
+    // one query.
+    foreach ($this->fields as $key => $field) {
+      if ($field['field'] instanceOf SelectQueryInterface) {
+        $this->fields[$key]['field'] = clone($field['field']);
+      }
+    }
+    foreach ($this->tables as $key => $table) {
+      if ($table['table'] instanceOf SelectQueryInterface) {
+        $this->tables[$key]['table'] = clone($table['table']);
+      }
+    }
   }
 }
 
