我知道這不是一個創建表的好習慣,所以請先把它放在一邊。在MySQL中使用子查詢進行選擇
我有一個表,讓說表A和B表
Table A :
| ID | fk_tableB_ID | title
-------------------------
| 10 | 1,2 | title 1
| 11 | 3 | title 2
Table B :
| ID | category
---------------
| 1 | cat1
| 2 | cat2
| 3 | cat3
我嘗試此查詢:
SELECT
a.ID,
a.title,
(
SELECT
group_concat(b.category)
FROM
tableB B
WHERE
B.ID IN (a.fk_tableB_ID)
) as category
FROM
tableA a
它返回:
| ID | category | title
-----------------------
| 10 | cat1 | title1
| 11 | cat3 | title2
但是,這不是我想。我想要的是
| ID | category | title
-----------------------
| 10 | cat1,cat2 | title1
| 11 | cat3 | title2
請幫忙,什麼是正確的MySQL查詢代碼,所以我可以得到上面的表。 THX提前
的'你建議的表A是不好的設計,例如每個標題都存儲多次。也許還有一個有很多文字的描述字段。你創造冗餘!第三張表是一個更好的設計。 – 2010-01-26 08:07:58
@Felix,你說的對,這只是一種方法,只需要最少的修改即可完成他想要的任務。第三張桌子確實是一個更好的解決方案。 – 2010-01-26 08:12:44
Thx對你的答案真的有幫助。我知道這是一張糟糕的桌子,但有時候我會得到像這樣的桌子(來自其他程序員的舊腳本)。我想也許我可以做一個單一的查詢,但現在我知道它不能。 – aprian 2010-01-27 06:43:56