我用标准 SQL 编写了查询,并在 MySQL 中测试了它们。
现在,当我尝试在 PostgreSQL 中运行它们时,我遇到了各种各样的错误,我并不真正理解这些错误。 这是在 MySQL 中有效的原始查询:
CREATE VIEW popularCSsections AS (
SELECT sect.csid, COUNT(sc.sid) as numStudents
FROM courseSection sect, studentCourse sc, department d
WHERE sect.csid = sc.csid
AND sect.dcode = d.dcode
AND dname = "Computer Science"
GROUP BY sect.csid
HAVING numStudents > 2
);
给出这个错误:
psql:a2tables:60: ERROR: column "Computer Science" does not exist
LINE 8: AND department.dname = "Computer Science"
^
能否请您帮助我了解错误的性质并帮助我修复它们?
附加问题:
CREATE VIEW popularCSsections AS (
SELECT sect.csid, COUNT(sc.sid) as numStudents
FROM courseSection sect, studentCourse sc, department d
WHERE sect.csid = sc.csid
AND sect.dcode = d.dcode
AND dname = 'Computer Science'
GROUP BY sect.csid
HAVING numStudents > 2
);
错误:
psql:a2tables:70: ERROR: column "numstudents" does not exist
LINE 8: HAVING numStudents > 2
^
最佳答案
您需要用单引号将字符串括起来:
AND dname = 'Computer Science'
这里发生的事情是双引号被解释为“标识符引号”,表示您希望将内容解释为数据库标识符(列名或表名)。
关于mysql - 在 PostgreSQL 中运行 MySQL 查询时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244294/