There is no need to use `IF EXISTS()` with `db_query()`. Drupal core code never use it. // comment_num_new() return db_query('SELECT COUNT(cid) FROM {comment} WHERE nid = :nid AND created > :timestamp AND status = :status', array( ':nid' => $nid, ':timestamp' => $timestamp, ':status' => COMMENT_PUBLISHED, ))->fetchField(); <!-- break --> // aggregrator_cron() $result = db_query('SELECT * FROM {aggregator_feed} WHERE queued = 0 AND checked + refresh < :time AND refresh <> :never', array( ':time' => REQUEST_TIME, ':never' => AGGREGATOR_CLEAR_NEVER, )); $queue = DrupalQueue::get('aggregator_feeds'); foreach ($result as $feed) { if ($queue->createItem($feed)) { // Add timestamp to avoid queueing item more than once. db_update('aggregator_feed')->fields(array('queued' => REQUEST_TIME))->condition('fid', $feed->fid)->execute(); } } <!-- break --> // aggregrator_feed_load() $feeds = &drupal_static(__FUNCTION__); if (!isset($feeds[$fid])) { $feeds[$fid] = db_query('SELECT * FROM {aggregator_feed} WHERE fid = :fid', array(':fid' => $fid))->fetchObject(); } return $feeds[$fid]; // aggregrator_expire() $iids = db_query('SELECT iid FROM {aggregator_item} WHERE fid = :fid AND timestamp < :timestamp', array( ':fid' => $feed->fid, ':timestamp' => $age, ))->fetchCol(); if ($iids) { db_delete('aggregator_category_item')->condition('iid', $iids, 'IN')->execute(); db_delete('aggregator_item')->condition('iid', $iids, 'IN')->execute(); } In your case, the following code is enough. if ($nid = db_query("SELECT nid FROM {node} WHERE type = :type1 AND uid = '123'", array("type1" => 'nodetype_x'))->fetchField()) { // There such a node. } else { // There isn't such a node. }