Skip to Content
SQL ReferenceQuery Data (SELECT & JOIN)

Query Data (SELECT & JOIN)

Use this page for query-only SQL patterns in KalamDB.

KalamDB supports the DataFusion SELECT query surface. For advanced query syntax and planner behavior, use the DataFusion SQL docs as the primary reference:

Basic SELECT

SELECT <columns> FROM [<namespace>.]<table_name> [WHERE <condition>] [ORDER BY <expr> [ASC|DESC]] [LIMIT <n>];

Example:

SELECT id, sender, content, created_at FROM chat.messages WHERE conversation_id = 42 ORDER BY created_at DESC LIMIT 50;

Filtering, Grouping, and Aggregation

SELECT sender, COUNT(*) AS message_count FROM chat.messages WHERE conversation_id = 42 GROUP BY sender HAVING COUNT(*) >= 10 ORDER BY message_count DESC;

JOIN Support

KalamDB supports standard DataFusion join patterns, including:

  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • FULL JOIN
  • CROSS JOIN
  • JOIN ... USING (...)

Example (INNER JOIN):

SELECT m.id, m.content, u.email FROM chat.messages m INNER JOIN system.users u ON m.user_id = u.user_id WHERE m.conversation_id = 42;

Example (LEFT JOIN):

SELECT c.id, c.title, m.content FROM chat.conversations c LEFT JOIN chat.messages m ON c.id = m.conversation_id ORDER BY c.id;

Subqueries and CTEs

Common DataFusion query constructs are supported, including subqueries and CTEs.

WITH ranked AS ( SELECT sender, COUNT(*) AS total_messages FROM chat.messages GROUP BY sender ) SELECT * FROM ranked WHERE total_messages >= 100 ORDER BY total_messages DESC;

Set Operations

You can use DataFusion set operations such as UNION and UNION ALL.

SELECT sender FROM chat.messages_2025 UNION ALL SELECT sender FROM chat.messages_2026;

Advanced Query Reference

For advanced SELECT features, rely on DataFusion SQL documentation:

Last updated on