diff --git a/acl.module b/acl.module
index 97c2c15..60c40cd 100644
--- a/acl.module
+++ b/acl.module
@@ -103,18 +103,23 @@ function acl_edit_form(&$form_state, $acl_id, $label = NULL, $new_acl = FALSE) {
  * Provide access control to all nodes selected by a subquery, based upon an ACL id.
  */
 function acl_add_nodes($subselect, $acl_id, $view, $update, $delete, $priority = 0) {
-  db_delete('acl_node')
+  $nids = $subselect->execute()->fetchAllKeyed(0, 0);
+  if (!empty($nids)) {
+   db_delete('acl_node')
     ->condition('acl_id', $acl_id)
-    ->condition('nid', $subselect, 'IN')
+    ->condition('nid', $nids, 'IN')
     ->execute();
-  $subselect->addExpression($acl_id, 'acl_id');
-  $subselect->addExpression((int) $view, 'grant_view');
-  $subselect->addExpression((int) $update, 'grant_update');
-  $subselect->addExpression((int) $delete, 'grant_delete');
-  $subselect->addExpression($priority, 'priority');
-  db_insert('acl_node')
+
+   $subselect->addExpression($acl_id, 'acl_id');
+   $subselect->addExpression((int) $view, 'grant_view');
+   $subselect->addExpression((int) $update, 'grant_update');
+   $subselect->addExpression((int) $delete, 'grant_delete');
+   $subselect->addExpression($priority, 'priority');
+
+   db_insert('acl_node')
     ->from($subselect)
     ->execute();
+  }
 }
 
 /**
