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() 并以大写形式提供字符串文字。