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 JOINLEFT JOINRIGHT JOINFULL JOINCROSS JOINJOIN ... 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