2 查询单独运行良好但组合产生语法错误
2 Queries work well separately but combined produce a syntax error
第一个查询涉及与特定主题相关的书籍和作者列表,并生成正确的结果:
SELECT BOOK_NUM,
BOOK_TITLE,
BOOK_SUBJECT,
AU_LNAME
FROM BOOK
JOIN WRITES USING (BOOK_NUM)
JOIN AUTHOR USING (AU_ID)
WHERE BOOK_SUBJECT = 'CLOUD'
ORDER BY BOOK_TITLE;
第二个扩展了主题并产生了正确的结果:
SELECT BOOK_NUM,
BOOK_TITLE,
BOOK_SUBJECT,
AU_FNAME,
AU_LNAME,
Count(BOOK_TITLE) AS `NUM BOOKS BY AUTHOR`
FROM BOOK
JOIN WRITES USING (BOOK_NUM)
JOIN AUTHOR USING (AU_ID)
GROUP BY BOOK_NUM, AU_ID
ORDER BY `NUM BOOKS BY AUTHOR`,
AU_LNAME;
当我将两者结合起来时,它会在 WHERE BOOK_SUBJECT = 'CLOUD':
处产生语法错误
SELECT BOOK_NUM,
BOOK_TITLE,
BOOK_SUBJECT,
AU_FNAME,
AU_LNAME,
Count(BOOK_TITLE) AS `NUM BOOKS BY AUTHOR`
FROM BOOK
JOIN WRITES USING (BOOK_NUM)
JOIN AUTHOR USING (AU_ID)
GROUP BY BOOK_NUM, AU_ID
WHERE BOOK_SUBJECT = 'CLOUD'
ORDER BY `NUM BOOKS BY AUTHOR`,
AU_LNAME,
BOOK_TITLE;
无论我把它放在哪里,我都会得到同样的错误,如果我删除它,代码就会运行。我需要做什么来解决这个问题?我需要包含这个 where 子句。预先感谢您帮助我。
不确定 SQL 您使用的是什么。尝试将 WHERE 子句移动到 GROUP BY 之上。
好问题。尝试参考一些关于表达式顺序的文档...
尝试以下代码,我们在其中适当地移动了 WHERE
语句。
SELECT
BOOK_NUM,
BOOK_TITLE,
BOOK_SUBJECT,
AU_FNAME,
AU_LNAME,
Count(BOOK_TITLE) AS `NUM BOOKS BY AUTHOR`
FROM BOOK
JOIN WRITES USING (BOOK_NUM)
JOIN AUTHOR USING (AU_ID)
WHERE BOOK_SUBJECT = 'CLOUD'
GROUP BY BOOK_NUM, AU_ID
ORDER BY `NUM BOOKS BY AUTHOR`,
AU_LNAME,
BOOK_TITLE;
第一个查询涉及与特定主题相关的书籍和作者列表,并生成正确的结果:
SELECT BOOK_NUM,
BOOK_TITLE,
BOOK_SUBJECT,
AU_LNAME
FROM BOOK
JOIN WRITES USING (BOOK_NUM)
JOIN AUTHOR USING (AU_ID)
WHERE BOOK_SUBJECT = 'CLOUD'
ORDER BY BOOK_TITLE;
第二个扩展了主题并产生了正确的结果:
SELECT BOOK_NUM,
BOOK_TITLE,
BOOK_SUBJECT,
AU_FNAME,
AU_LNAME,
Count(BOOK_TITLE) AS `NUM BOOKS BY AUTHOR`
FROM BOOK
JOIN WRITES USING (BOOK_NUM)
JOIN AUTHOR USING (AU_ID)
GROUP BY BOOK_NUM, AU_ID
ORDER BY `NUM BOOKS BY AUTHOR`,
AU_LNAME;
当我将两者结合起来时,它会在 WHERE BOOK_SUBJECT = 'CLOUD':
处产生语法错误SELECT BOOK_NUM,
BOOK_TITLE,
BOOK_SUBJECT,
AU_FNAME,
AU_LNAME,
Count(BOOK_TITLE) AS `NUM BOOKS BY AUTHOR`
FROM BOOK
JOIN WRITES USING (BOOK_NUM)
JOIN AUTHOR USING (AU_ID)
GROUP BY BOOK_NUM, AU_ID
WHERE BOOK_SUBJECT = 'CLOUD'
ORDER BY `NUM BOOKS BY AUTHOR`,
AU_LNAME,
BOOK_TITLE;
无论我把它放在哪里,我都会得到同样的错误,如果我删除它,代码就会运行。我需要做什么来解决这个问题?我需要包含这个 where 子句。预先感谢您帮助我。
不确定 SQL 您使用的是什么。尝试将 WHERE 子句移动到 GROUP BY 之上。
好问题。尝试参考一些关于表达式顺序的文档...
尝试以下代码,我们在其中适当地移动了 WHERE
语句。
SELECT
BOOK_NUM,
BOOK_TITLE,
BOOK_SUBJECT,
AU_FNAME,
AU_LNAME,
Count(BOOK_TITLE) AS `NUM BOOKS BY AUTHOR`
FROM BOOK
JOIN WRITES USING (BOOK_NUM)
JOIN AUTHOR USING (AU_ID)
WHERE BOOK_SUBJECT = 'CLOUD'
GROUP BY BOOK_NUM, AU_ID
ORDER BY `NUM BOOKS BY AUTHOR`,
AU_LNAME,
BOOK_TITLE;