mysql - 一个表的某些列之间的 AND 运算符
问题描述
通过一个严重的连接,我有这张表,其中的行是作者的名字,他的书名和书的 ID。如果一本书有两个或更多作者,则有两行或更多行。
+------------+------+--------+
| AuthorName | book | idBook |
+------------+------+--------+
| a1 | b1 | 1 |
| a2 | b1 | 1 |
| a3 | b2 | 2 |
| a4 | b2 | 2 |
| a5 | b2 | 2 |
+------------+------+--------+
现在我想在女巫中创建一个过滤器,如果用户插入作者,他将获得插入作者组合的标题。例如:如果我插入“a1”和“a2”,我会得到 b1。但是如果我插入“a1”和“a3”,我会得到一个空字符串,因为这两个作者之间没有组合。
我怎样才能为这个问题写一个查询?我试过类似的东西:
select AuthorName, book, idBook
from table
where AuthorName = a1 and AuthorName = a2
但显然它不起作用,因为结果是一个空字符串。有什么建议么?
解决方案
您可以使用聚合:
select book, idBook
from t
where AuthorName in ('a1', 'a2')
group by book, idbook
having count(*) = 2; -- number of elements in the list
注意:您不应该存储book
在此表中。 bookid
应该是对表的外键引用,例如,主键books
在哪里。bookid
推荐阅读
- powershell - Azure DevOps:发布管道中的 PATCH REST 调用返回 (403) 禁止
- wpf - win 7 和 win 10 角半径的不同风格
- php - 结合 imap_open 和 stdin
- c# - 在我的 ASP.NET Core MVC 2.2 项目中显示谷歌日历
- python - 使用 tkinter 和 pyautogui 复制到剪贴板
- clockify - 如何通过 Clockify 中的 API 在工作区添加用户
- python - 如何使用 matplotlib 缩放图形
- cakephp - CakePhp isUnique 显然是错误的
- javascript - 11ty 简码输出菜单
- docker - docker以分离模式运行 - 基本问题