簡體   English   中英

如何使用連接列通過與MYSQL中另一個表的關系過濾表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM