我正在编写一个需要的SQL语句:
这就是我现在所拥有的。
select * from PreviousJobs pj, Jobs j where jobId = '273121'
AND where (pj.sOtherRef = j.sOtherRef) = True
嗯,
答案 0 :(得分:4)
你不需要= True,或者第二个。
只是
select * from PreviousJobs pj, Jobs j where jobId = '273121'
AND pj.sOtherRef = j.sOtherRef
答案 1 :(得分:4)
不需要筑巢;这是一个简单的JOIN,这是最好用明确的连接符号写的:
SELECT cj.*, pj.*
FROM PreviousJobs AS pj
JOIN Jobs AS cj ON pj.sOtherRef = cj.sOtherRef
WHERE cj.jobId = '273121'
您的语句中不需要第二个WHERE(这是语法错误;您应该向我们提供了DBMS为您提供的错误消息)。您无需将比较与TRUE进行比较。
在SQL-86和SQL-89中,必须使用逗号分隔的FROM子句中的表名列表,但由于SQL-92支持已添加到DBMS中,因此没有必要。您应该了解它,以便在阅读旧SQL时,您知道它意味着什么。但是你应该计划只使用新的JOIN表示法,除非工作场所标准的压力很大(并且是不明智的)使用旧的表示法。
根据您使用的DBMS,您可能会发现表别名中的AS不允许(Oracle),即使标准说它没问题。这种差异就是为什么在问题中包含有关DBMS的信息是个好主意。
答案 2 :(得分:1)
查询将是..
select *
from PreviousJobs pj inner join Jobs j ON pj.sOtherRef = j.sOtherRef
where j.jobId = '273121'