我試圖連接兩個表(家長和孩子),但我只想要一個孩子返回的每個父...返回與多個孩子
select parent.name,child.name from parent left join child on parent.id=child.parentid
針對上述情況,各孩子被退回,父母被複制。我不打擾哪個孩子回來。
感謝所有幫助
克里斯
我試圖連接兩個表(家長和孩子),但我只想要一個孩子返回的每個父...返回與多個孩子
select parent.name,child.name from parent left join child on parent.id=child.parentid
針對上述情況,各孩子被退回,父母被複制。我不打擾哪個孩子回來。
感謝所有幫助
克里斯
只有一個樣品@Mahesh Madushanka。我將在稍後刪除它,但我不能在評論格式化
這裏我2個表
MariaDB [yourSchema]> select id from table1;
+--------+
| id |
+--------+
| 000001 |
| 000002 |
| 000003 |
| 000004 |
| 000005 |
| 000005 |
+--------+
6 rows in set (0.00 sec)
MariaDB [yourSchema]> select id from table2;
+--------+
| id |
+--------+
| 000001 |
| 000001 |
| 000002 |
| 000002 |
| 000003 |
| 000004 |
+--------+
6 rows in set (0.00 sec)
結果只與聯接
MariaDB [yourSchema]> SELECT t1.id,t2.id FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.id;
+--------+--------+
| id | id |
+--------+--------+
| 000001 | 000001 |
| 000001 | 000001 |
| 000002 | 000002 |
| 000002 | 000002 |
| 000003 | 000003 |
| 000004 | 000004 |
| 000005 | NULL |
| 000005 | NULL |
+--------+--------+
8 rows in set (0.01 sec)
結果與加入和分組 - t1.id = 1和2錯過1次
MariaDB [yourSchema]> SELECT t1.id,t2.id FROM table1 t1
-> LEFT JOIN table2 t2 ON t1.id = t2.id
-> GROUP BY t2.id;
+--------+--------+
| id | id |
+--------+--------+
| 000005 | NULL |
| 000001 | 000001 |
| 000002 | 000002 |
| 000003 | 000003 |
| 000004 | 000004 |
+--------+--------+
5 rows in set (0.00 sec)
選擇parent.name,從父child.name左邊parent.id加入孩子上parent.id = child.parentid組
這僅適用於如果**父母。 ID **是唯一的。 –
'parent.id' *應該是唯一的......否則,數據模型會非常糟糕。也就是說,@ mahesh的解決方案應該是'group by parent.id',因爲'parent.name'可能是* not * unique(正如@bernd所暗示的)。 – pyepye
@bernd他說:「我只希望爲每個父母返回一個孩子」,如果父母的ID不是唯一的,這意味着我們可以在父表中有重複的父項。但仍然根據他的要求,他希望只有一個記錄的父母,所以這將工作 –
不會說謊,表名的選擇相當差。建議定義什麼被視爲加入的父/子和外鍵。 – pyepye
太好了。謝謝你的時間。 Group By會做得很好。出於某種原因,我一直認爲Left Join只會向你展示左邊的相關權利,右邊的join會做相反的事情...... – Chris