在我所工作的每家公司,我发现人们仍然在ANSI-89标准中编写SQL查询:
select a.id, b.id, b.address_1
from person a, address b
where a.id = b.id
Run Code Online (Sandbox Code Playgroud)
而不是ANSI-92标准:
select a.id, b.id, b.address_1
from person a
inner join address b
on a.id = b.id
Run Code Online (Sandbox Code Playgroud)
对于这样一个非常简单的查询,可读性没有太大差异,但是对于大型查询,我发现将我的连接条件分组并列出表格可以更容易地查看我在连接中可能存在问题的位置,以及让我在WHERE子句中保留所有过滤功能.更不用说我觉得外连接比Oracle中的(+)语法更直观.
当我尝试向人们传播ANSI-92时,使用ANSI-92而不是ANSI-89有什么具体的性能优势吗?我会自己尝试,但是我们这里的Oracle设置不允许我们使用EXPLAIN PLAN - 不希望人们尝试优化他们的代码,是吗?
我有以下MySQL查询:
SELECT posts.id, posts.name, LEFT(posts.content, 400), posts.author, posts.date, users.display_name,
GROUP_CONCAT(tags.tag ORDER BY tag_linking.pid ASC SEPARATOR ",") update_tags
FROM posts, tag_linking, tags
INNER JOIN `users`
ON posts.author=users.id;
WHERE tag_linking.pid = posts.id
AND tags.id = tag_linking.tid
ORDER BY posts.date DESC
Run Code Online (Sandbox Code Playgroud)
哪个,你可以看到,连接三个表等等.无论如何,问题是它给出了一个错误:
ERROR CODE:
SQL Error (1054): Unknown column 'posts.author' in 'on clause'
Run Code Online (Sandbox Code Playgroud)
即使在另一个页面上使用这个更简单的查询工作:
SELECT posts.id, posts.name, LEFT(posts.content, 400), posts.author, posts.date, users.display_name FROM `posts`
INNER JOIN `users`
ON posts.author=users.id
Run Code Online (Sandbox Code Playgroud)
有没有人想过为什么会这样?谢谢你的帮助.
我收到此错误:
#1054 - 'on子句'中的未知列'examineresults.userid'
我已经看过其他帖子,但我似乎无法弄明白.我不认为我指的是任何乱序......
SELECT examinationresults.id AS id, examinationresults.examid AS examid,
examination.tag AS examtag, examination.title AS examtitle, examinationresults.revision AS revision,
examination.medicalspecialtyid AS medicalspecialtyid, medicalspecialties.title AS medicalspecialtytitle,
examination.institutionid AS institutionid, institutions.title AS institutiontitle,
examinationresults.grade AS grade, examinationresults.points AS points, examinationresults.pointsof AS pointsof,
examinationresults.datebegan AS datebegan, examinationresults.datefinished AS datefinished,
examinationresults.totaltime AS totaltime, examinationresults.finished AS finished, examinationresults.graded AS graded,
users.username AS username, users.firstname AS firstname, users.middlename AS middlename, users.lastname AS lastname
FROM examinationresults, examination
INNER JOIN medicalspecialties
ON examination.medicalspecialtyid=medicalspecialties.id
INNER JOIN institutions …Run Code Online (Sandbox Code Playgroud)