diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
index 1942f6d..28a5afa 100644
--- a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
+++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
@@ -1623,9 +1623,11 @@ public function countFieldData($storage_definition, $as_bool = FALSE) {
         $or->isNotNull($table_mapping->getFieldColumnName($storage_definition, $property_name));
       }
       $query->condition($or);
-      $query
-        ->fields('t', array($this->idKey))
-        ->distinct(TRUE);
+      if (!$as_bool) {
+        $query
+          ->fields('t', array($this->idKey))
+          ->distinct(TRUE);
+      }
     }
 
     // @todo Find a way to count field data also for fields having custom
@@ -1635,7 +1637,9 @@ public function countFieldData($storage_definition, $as_bool = FALSE) {
       // If we are performing the query just to check if the field has data
       // limit the number of rows.
       if ($as_bool) {
-        $query->range(0, 1);
+        $query
+          ->range(0, 1)
+          ->addExpression('1');
       }
       else {
         // Otherwise count the number of rows.
diff --git a/core/modules/field/src/Tests/FieldDataCountTest.php b/core/modules/field/src/Tests/FieldDataCountTest.php
index ebf0591..a2c4d59 100644
--- a/core/modules/field/src/Tests/FieldDataCountTest.php
+++ b/core/modules/field/src/Tests/FieldDataCountTest.php
@@ -30,6 +30,11 @@ class FieldDataCountTest extends FieldUnitTestBase {
   protected $storageRev;
 
   /**
+   * @var \Drupal\Core\Entity\DynamicallyFieldableEntityStorageInterface
+   */
+  protected $storageUser;
+
+  /**
    * {@inheritdoc}
    */
   protected function setUp() {
@@ -37,6 +42,7 @@ protected function setUp() {
     $this->installEntitySchema('entity_test_rev');
     $this->storage = \Drupal::entityManager()->getStorage('entity_test');
     $this->storageRev = \Drupal::entityManager()->getStorage('entity_test_rev');
+    $this->storageUser = \Drupal::entityManager()->getStorage('user');
   }
 
   /**
@@ -136,4 +142,22 @@ public function testEntityCountAndHasData() {
     $this->assertEqual(count($entity->{$this->fieldTestData->field_name_2}), $cardinality, format_string('Revision %revision_id: expected number of values.', array('%revision_id' => $first_revision)));
   }
 
+  /**
+   * Verify that we can count a table that contains an entry with index 0.
+   */
+  public function testCountWithIndex0() {
+    // Create an entry for the anonymous user, who has user ID 0.
+    $user = $this->storageUser
+      ->create(array(
+        'uid' => 0,
+        'name' => 'anonymous',
+        'mail' => NULL,
+        'status' => FALSE,
+      ));
+    $user->save();
+
+    $storage = $user->getFieldDefinition('name')->getFieldStorageDefinition();
+    $this->assertTrue($this->storageUser->countFieldData($storage, TRUE));
+  }
+
 }
