我有以下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列出产品的所有操作。
我可以使用像<; p>这样的子选择来实现
SELECT * FROM operations WHERE pid = (SELECT pid FROM operations WHERE id = 8);
此查询列出了我需要的确切结果,例如;
----------------------------
| id | pid | operation |
----------------------------
| 5 | 12 | pending |
| 8 | 12 | replaced |
| 12 | 12 | closed |
----------------------------
问题是;如果没有子选择,我怎么能这样做?
答案 0 :(得分:1)
您可以像这样使用
SELECT a.* FROM operations a
join operations b on a.pid =b.pild
WHERE b.id=8
答案 1 :(得分:1)
使用JOIN
:
SELECT o1.*
FROM operations o1 join
operations o2 on o1.pid=o2.pid
WHERE o2.id = 8
结果:
id pid operation
-------------------
5 12 pending
8 12 replaced
12 12 closed
中的示例结果