[英]How to filter a table by a relation to another table in MYSQL, with a concatenate column?
使用MYSQL,我有2個表:聯系人和類別
+------+---------+
| id | title |
+------+---------+
| 10 | Cat |
| 11 | John |
| 12 | Sam |
+------+---------+
和類別
+------+------------+----------+
| id | id_contact | category |
+------+------------+----------+
| 1 | 10 | C# |
| 2 | 10 | WPF |
| 3 | 11 | PHP |
| 4 | 11 | JQuery |
| 5 | 12 | MySQL |
| 6 | 12 | MSSQL |
| 7 | 12 | PHP |
+------+------------+----------+
我想為所有具有PHP類別的聯系人選擇,在這種情況下,選擇結果將是:
+------+---------+---------------------+
| id | title | categories |
+------+---------+---------------------+
| 11 | John | PHP , JQuery |
| 12 | Sam | MySQL , MSSQL , PHP |
+------+---------+---------------------+
包含一列的所有列,這些列由“,”串聯和分隔。 請指教。
首先使用MySQL的GROUP_CONCAT()
連接兩個表以連接行。
SELECT a.ID, a.Title,
GROUP_CONCAT(b.category) categories
FROM Contacts a
INNER JOIN categories b
ON a.ID = b.id_contact
GROUP BY a.ID, a.Title
HAVING SUM(b.category = 'php') > 0
此條件HAVING SUM(b.category = 'php') > 0
僅過濾類別中至少有1條php
記錄的記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.