Queries - Limits

On this page:

Query Limits

  • Edition-wise Query Limits
    • Professional - 100 queries
    • Enterprise - 250 queries
    • Ultimate - 500 queries
  • Sources
    • REST API Sources - 200 sources for both Enterprise and Ultimate editions
    • SQL Sources - 5 for both Enterprise and Ultimate editions

Query Rules and Limitations

You can write SELECT, INSERT, UPDATE, and DELETE queries. The following are some of the important considerations for various operations.

SELECT Queries(Read Operation)

  • Allowed in both read-only and writable sources.
  • You must specify columns. SELECT * is not allowed. You can select up to 50 columns.
  • All queries must include a LIMIT. If you do not add one, a default limit of 100 is applied. The maximum allowed limit is 100.
  • Only basic data types are supported namely, numbers, strings, dates, timestamps, etc. Complex types like JSON, XML, arrays are not supported.
  • You can use up to five joins between tables.
  • GROUP BY, ORDER BY, WHERE, and HAVING clauses each allow up to 50 items/conditions.
  • Sub-queries are not supported.
  • All date and time stamp values must be in the ISO8601 format(e.g., 2025-07-15T10:00:00).

INSERT, UPDATE, DELETE(Write Operations)

  • Only allowed in writable sources.
  • You must mention columns explicitly in INSERT and UPDATE queries.
  • Sub-queries are not allowed.
  • Only basic data types are supported namely, numbers, strings, dates, timestamps, etc. Complex types like JSON, XML, arrays are not supported.
  • All date and time stamp values must be in the ISO8601 format(e.g., 2025-07-15T10:00:00).

Supported SQL Functions

You can use the following common SQL functions.

  • SUM()
  • COUNT()
  • AVG()
  • MIN()
  • MAX()
  • LOWER()
  • UPPER()

Sample Queries

SELECT Query for PostgreSQL, MySQL

SELECT
  clients.client_name,
  COUNT(clients.client_id) AS client_count,
  SUM(clients.client_size) AS total_client_size,
  AVG(clients.client_size) AS avg_client_size,
  client_revenue.account_name,
  client_revenue.bank,
  clients.created_on AS client_joined_at
FROM CLIENTS AS clients
INNER JOIN CLIENT_REVENUE AS client_revenue
  ON clients.account_no = client_revenue.account_no
WHERE
  clients.created_on BETWEEN '2009-01-01T12:12:12' AND '2025-01-01T23:23:23'
  AND (
    (client_revenue.account_name LIKE 'P%' OR client_revenue.account_name LIKE '%KZ%')
    AND clients.client_email IS NOT NULL
  )
GROUP BY
  clients.client_name,
  clients.created_on,
  client_revenue.account_name,
  client_revenue.bank
HAVING
  SUM(clients.client_size) > 500 AND
  AVG(clients.client_size) > 100
ORDER BY
  clients.client_name
OFFSET 1
LIMIT 4;

SELECT Query for MicrosoftSQL

SELECT
clients.client_name,
COUNT(clients.client_id) AS client_count,
SUM(clients.client_size) AS total_client_size,
AVG(clients.client_size) AS avg_client_size,
client_revenue.account_name,
client_revenue.bank,
clients.created_on AS client_joined_at
FROM CLIENTS AS clients
INNER JOIN CLIENT_REVENUE AS client_revenue
  ON clients.account_no = client_revenue.account_no
WHERE
  clients.created_on BETWEEN '2009-01-01T12:12:12' AND '2025-01-01T23:23:23'
  AND (
    (client_revenue.account_name LIKE 'P%' OR client_revenue.account_name LIKE '%KZ%')
    AND clients.client_email IS NOT NULL
  )
GROUP BY
  clients.client_name,
  clients.created_on,
  client_revenue.account_name,
  client_revenue.bank
HAVING
  SUM(clients.client_size) > 500 AND
  AVG(clients.client_size) > 100
ORDER BY
  clients.client_name
OFFSET 1 ROWS
FETCH NEXT 4 ROWS ONLY;

INSERT

INSERT INTO CLIENTS(client_name, client_size, client_email, phone, client_designation, created_on, emp_dri) VALUES
('Test Motors', 1435, 'tm@abc.com', 4758437183, 'Supply Manager', '2025-07-24T13:40:00', 'Ross');

UPDATE

update CLIENTS
set
    client_name = 'Test Motors New',
    client_size = 1500,
    client_email = 'tmnew@gmail.com',
    phone = 1234567890,
    client_designation = 'Supply Head',
    created_on = '2025-08-10T14:40:00',
    emp_dri = 'Specter'
where 
    client_name = 'Test Motors' AND
    client_size = 1435 AND
    client_email = 'tm@gmail.com' AND
    phone = 4758437183 AND
    client_designation = 'Supply Manager' AND
    created_on = '2025-07-24T13:40:00' AND
    emp_dri = 'Ross'

DELETE

DELETE FROM CLIENTS
WHERE
    client_name = 'Test Motors New' AND
    client_size = 1500 AND
    client_email = 'tmnew@gmail.com' AND
    phone = 1234567890 AND
    client_designation = 'Supply Head' AND
    created_on = '2025-08-10T14:40:00' AND
    emp_dri = 'Specter'

If your query does not meet these rules, Zoho CRM will return a helpful error message to guide you. This helps ensure smooth, efficient, and secure interaction with your connected databases.