Distinct

The distinct method allows you to remove duplicate rows from your query results. It adds the DISTINCT keyword to your SQL query.

Basic Usage

import { createQueryBuilder } from '@hypequery/clickhouse';

const db = createQueryBuilder<Schema>();

// Get unique values from a column
const query = db
  .table('users')
  .select(['country'])
  .distinct()
  .toSQL();
// Result: SELECT DISTINCT country FROM users

Type Definitions

distinct(): this

Parameters

No parameters required.

Returns

Returns the query builder instance for method chaining.

Examples

Basic Distinct

// Get unique countries
const query = db
  .table('users')
  .select(['country'])
  .distinct()
  .toSQL();
// Result: SELECT DISTINCT country FROM users

// Get unique statuses
const query2 = db
  .table('orders')
  .select(['status'])
  .distinct()
  .toSQL();
// Result: SELECT DISTINCT status FROM orders

Type Safety

The distinct method provides basic TypeScript support:

interface UserSchema {
  users: {
    id: 'UInt32';
    name: 'String';
    country: 'String';
    status: 'String';
  };
}

const db = createQueryBuilder<UserSchema>();

// ✅ Valid distinct usage
const query = db
  .table('users')
  .select(['country'])
  .distinct() // No parameters needed
  .toSQL();

// ✅ Distinct with type-safe columns
const query2 = db
  .table('users')
  .select(['country', 'status'])
  .distinct()
  .toSQL();