[SalesForce] wrong with this query? (Unknown error parsing query)

When I run the following query in query editor I get this error.

Error

Unknown error parsing query

Query

SELECT Id, OwnerId,Account.OwnerId
FROM Contact where OwnerId = Account.OwnerId limit 100

Does anybody know what the problem is?

Best Answer

You can't compare a field to another field in SOQL.

Salesforce has added a clear Knowledge Article to make that clear. From Field to field comparison in an SOQL WHERE clause:

Salesforce does not allow direct field to field comparison in SOQL query.

To achieve this you can create a formula field that will compare fields and return a value (such as true or false) which you can use in a WHERE clause.


Originally I also pointed to the documentation on fieldExpression Syntax (emphasis mine):

fieldName comparisonOperator value

value: A value used to compare with the value in fieldName. You must supply a value whose data type matches the field type of the specified field. You must supply a native value—other field names or calculations are not permitted. If quotes are required (for example, they are not for dates and numbers), use single quotes. Double quotes result in an error.

A common workaround is to create a checkbox formula to the same effect. Then just check if it's true in your query.