SQL语法查询
SQL Syntax Query
谁能告诉我这里的语法哪里出了问题?
我有这个查询 returns 26 行
SELECT firstname, lastname
FROM author
WHERE authorid IN (
SELECT authorid
FROM written_by
JOIN book ON written_by.bookdescid = book.bookdescid
WHERE UPPER (book.title) LIKE UPPER ('%electric%')
AND NOT UPPER (written_by.role) LIKE UPPER('%translator%'));
这似乎是正确的,我之所以使用 UPPER 和 ('%example%') 是为了改变大小写。
但是,当我尝试添加到查询中以找出书的副标题还包含 'electric' 的地方时,我不知怎么弄错了语法,因为它 returns 行少了?如果有的话,它应该相同或更多...我尝试了一些变体,但下面这个是我认为可行的..
SELECT firstname, lastname
FROM author
WHERE authorid IN (
SELECT authorid
FROM written_by
JOIN book ON written_by.bookdescid = book.bookdescid
WHERE UPPER (book.title) OR (book.subtitle) LIKE UPPER ('%electric%')
AND NOT UPPER (written_by.role) LIKE UPPER('%translator%'));
您必须使用带有运算符 LIKE
:
的单独表达式
WHERE ((UPPER(book.title) LIKE '%ELECTRIC%') OR (UPPER(book.subtitle) LIKE '%ELECTRIC%'))
AND (UPPER(written_by.role) NOT LIKE '%TRANSLATOR%');
也仅对列使用 UPPER()
并以大写形式提供字符串文字。
谁能告诉我这里的语法哪里出了问题?
我有这个查询 returns 26 行
SELECT firstname, lastname
FROM author
WHERE authorid IN (
SELECT authorid
FROM written_by
JOIN book ON written_by.bookdescid = book.bookdescid
WHERE UPPER (book.title) LIKE UPPER ('%electric%')
AND NOT UPPER (written_by.role) LIKE UPPER('%translator%'));
这似乎是正确的,我之所以使用 UPPER 和 ('%example%') 是为了改变大小写。
但是,当我尝试添加到查询中以找出书的副标题还包含 'electric' 的地方时,我不知怎么弄错了语法,因为它 returns 行少了?如果有的话,它应该相同或更多...我尝试了一些变体,但下面这个是我认为可行的..
SELECT firstname, lastname
FROM author
WHERE authorid IN (
SELECT authorid
FROM written_by
JOIN book ON written_by.bookdescid = book.bookdescid
WHERE UPPER (book.title) OR (book.subtitle) LIKE UPPER ('%electric%')
AND NOT UPPER (written_by.role) LIKE UPPER('%translator%'));
您必须使用带有运算符 LIKE
:
WHERE ((UPPER(book.title) LIKE '%ELECTRIC%') OR (UPPER(book.subtitle) LIKE '%ELECTRIC%'))
AND (UPPER(written_by.role) NOT LIKE '%TRANSLATOR%');
也仅对列使用 UPPER()
并以大写形式提供字符串文字。