我有以下 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/