mysql - SQL查询忽略条件

标签 mysql sql database sqlite

所以我试图“列出由作者 Gale 撰写并由 Pocket Books 打印的所有书籍”

我的数据库表如下

Table: author 
authorNumber, authorName
         01         Gale
         02         Ben
Table: book
bookCode,  bookTitle,     publishCode
     189   Press & Trash  PB
    3743   Ecommerce      PB

Table: publisher
publisherCode, publisherName
      PB        Pocket Books
      BB        Batman Books

Table: wrote
bookCode,  authorNumber
     189     01
     3743    02 

这是我的查询,它忽略了我的 Gale 条件,只是获取 Pocket Books 出版的所有书籍,有什么帮助吗?

SELECT bookTitle
FROM Book B, Wrote BC, Author, Publisher PC
WHERE B.bookCode = BC.bookCode
AND B.publisherCode = PC.publisherCode
AND authorName ='Gale'
AND publisherName ='Pocket Books'
GROUP BY bookTitle;

最佳答案

您忘记添加author的连接条件。您最好使用显式连接语法,这使得它更加明显。

SELECT B.bookTitle
FROM Book B
join Wrote BC on B.bookCode = BC.bookCode
join Author A on BC.authorNumber = A.authorNumber
join Publisher PC on B.publisherCode = PC.publisherCode
WHERE A.authorName ='Gale'
AND PC.publisherName ='Pocket Books'
GROUP BY B.bookTitle

而且您也不需要分组。

关于mysql - SQL查询忽略条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23541241/

相关文章:

Mysql根据连接表分割列值

python - 如何将 Django 连接到 MongoDB 数据库?

java - jpa hibernate mysql 查询损坏

mysql - 如何在 MYSQL 中选择阿拉伯语的数据?

mysql - 如何在mysql中按时间戳排序?

sql - 存储查找表 ID 或纯数据之间的决定

php - 如何使用 ADODB 分析 SQL 查询?

mysql - 使用子查询删除显示 #1064 错误

android - 附加数据库在 Android 上给出 "database is already in use"

php - 主机 'hostname' 由于许多连接错误而被阻止;使用 'mysqladmin flush-hosts' 解锁