014_SOQL 和 SOSL
Posted BandariFang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了014_SOQL 和 SOSL相关的知识,希望对你有一定的参考价值。
1.SOQL: 和Sql 相似,但是更多的是限制,像Join 就不能够直接使用的,但在SOQL中融合了更多的对象(父子)间的关系,这个关系就能够代替join
1)按照Lastname升序排,Null 在最前面
SELECT AccountId,Email,Id,LastName FROM Contact WHERE Email LIKE ‘%.net%‘ ORDER BY LastName ASC NULLS FIRST
2)现在看两个例子,来具体分析下join在sql 和 soql 之间的使用方法
SQL:SELECT c.FirstName, c.LastName, a.Name FROM Account a RIGHT JOIN Contact c ON (c.AccountId = a.Id)
因为在soql中没有办法使用join,但可以明了的确定Account 和 Contact 之间的数据关系,即父子关系,是先有的Account,最后有Contact,每条contact都要指定一个Account。
SELECT FirstName, LastName, Account.Name FROM Contact
特别提醒:这里的Account.Name 的Account 指的是 Account的API Name, 如果是自定的Object,就应该使用 Custome__r.Name
接收值的写法:
Account[] acctsWithContacts = [SELECT Name, (SELECT FirstName,LastName FROM Contacts) FROM Account WHERE Name = ‘SFDC Computing‘]; // Get child records Contact[] cts = acctsWithContacts[0].Contacts;
(类似于java的写法)System.debug(‘Name of first associated contact: ‘ + cts[0].FirstName + ‘, ‘ + cts[0].LastName);
Contact[] cts = [SELECT Account.Name FROM Contact WHERE FirstName = ‘Carol‘ AND LastName=‘Ruiz‘]; Contact carol = cts[0]; String acctName = carol.Account.Name; System.debug(‘Carol\‘s account name is ‘ + acctName);
以上是关于014_SOQL 和 SOSL的主要内容,如果未能解决你的问题,请参考以下文章