如何使用连接,但只获取第一个表的行?
问题描述:
我有这两个表:如何使用连接,但只获取第一个表的行?
// one
+----+-------+
| id | value |
+----+-------+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
+----+-------+
// two
+----+-------+
| id | value |
+----+-------+
| 2 | ddd |
| 3 | eee |
| 4 | fff |
+----+-------+
这里是我的查询:
SELECT one.value FROM one JOIN two ON one.id = two.id
这里是当前的结果:
// 4 rows
+-----+
| bbb |
| |
| ccc |
| |
+-----+
这里是预期的输出:
// 2 rows
+-----+
| bbb |
| ccc |
+-----+
正如你所看到的我只想只有从one
表中选择行。我怎样才能做到这一点?
答
如果你试试这个在您的SQL提琴:
SELECT post_id, COUNT(*) from events
GROUP BY post_id
ORDER BY COUNT(*) DESC
你可以注意到,每个qanda
有几个相关的事件,因此你越来越具有匹配post_id
所有事件。
如果你期待两排,加DISTINCT
:
SELECT DISTINCT q.id, ee.table_code, q.subject
FROM
qanda q JOIN
events ee on ee.post_id = q.id and
ee.author_id = 31 and
ee.table_code = 15
你的查询看起来很适合我。我不认为它会根据您的样本数据返回4个结果,它应该返回您的预期结果。 – sgeddes
和工作小提琴:http://sqlfiddle.com/#!9/a70df8/1 – sgeddes
@sgeddes啊好的谢谢..我想我无法模拟我真正的问题.. – stack