mysql - 如何使用唯一键选择包含非唯一键的行?

标签 mysql

我有以下 MySQL 表;

----------------------------
| id |   pid   | operation |
----------------------------
| 5  |   12    |  pending  |
| 7  |   19    |  sent     |
| 8  |   12    |  replaced |
| 9  |   16    |  sent     |
| 12 |   12    |  closed   |
| 14 |   21    |  sent     |
----------------------------

id 是唯一的操作 ID,而 pid 是产品 ID,表示针对哪个产品完成了哪个操作,因此不是唯一的。我需要列出一个产品的所有操作,仅使用一个操作 ID。

我可以通过使用子选择来做到这一点;

SELECT * FROM operations WHERE pid = (SELECT pid FROM operations WHERE id = 8);

这个查询列出了我需要的准确结果,比如;

----------------------------
| id |   pid   | operation |
----------------------------
| 5  |   12    |  pending  |
| 8  |   12    |  replaced |
| 12 |   12    |  closed   |
----------------------------

问题是;如果没有子选择,我怎么能做到这一点?

最佳答案

你可以像这样使用join

SELECT a.* FROM operations a
join operations b on a.pid =b.pild
WHERE b.id=8

关于mysql - 如何使用唯一键选择包含非唯一键的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31579943/

相关文章:

mysql - 使用同一服务器上两个数据库之间的 2 个内部连接更新查询

php - 使用 mysqli 从数据库中选择、分组和求和结果

mysqli 嵌套选择查询

MySQL 管理员 GUI 工具 5.6

mysql - 如何在一个表中与其他表中的数据进行计数? mysql

mysql - 为什么sqlite中显示 "no such column"却有 `pragma`?

mysql - 如何在 Sequel Pro 中创建查找字段?

mysql - 如何在 MySQL 中返回数据透视表输出?

mysql - 如何打破用于连接其他表以获取其他数据的第一列中的数据

mysql - 左连接多个值