我使用PHP和PDO。 所以我有2个表,比如,
表1
| id | name | age |
| 1 | John | 25 |
| 2 | Tom | 32 |
| 3 | James| 45 |
表2
| id | Comment | Link |
| 1 | some text | 3 |
| 2 | some text | 3 |
| 3 | some text | 1 |
因此,链接列号代表table1中的id。例如,表2中的Link = 3s表示表1中的James。我需要一个查询,它带来所有table1的数据以及来自table2的相关Link列的重复值。
例如,查询应该给我(让我们选择詹姆斯),
| id | name | age | Value |
| 3 | James | 45 | 2 |
value = 2,因为链接列中有两个与James相关的3
我尝试了一些事情,但却遇到了很多错误。
答案 0 :(得分:2)
我认为你只需要GROUP BY
SELECT a.id,
a.name,
a.age,
count(*) as value
FROM table1 a
JOIN table2 b ON a.id = b.link
GROUP BY a.id, a.name, a.age
如果您真的只想要一行,请添加WHERE
SELECT a.id,
a.name,
a.age,
count(*) as value
FROM table1 a
JOIN table2 b ON a.id = b.link
WHERE a.name = 'James'
GROUP BY a.id, a.name, a.age
或使用子查询
SELECT a.id,
a.name,
a.age,
(SELECT count(*) FROM table2 b WHERE a.id = b.link) as value
FROM table1 a
WHERE a.name = 'James'