![](/img/trans.png)
[英]Concat two columns from mysql and display distinct values in dropdown list
[英]MySQL query how to get list of all distinct values from columns that contain multiple string values?
我試圖從表中的列中獲取不同值的列表。 每列可以包含多個逗號分隔值 。 我只想消除重復值並提出一個唯一值列表。
我知道如何通過抓取整個表然后循環行並將唯一值放入一個唯一的數組來使用PHP。
但是MySQL查詢可以做同樣的事情嗎?
我的表看起來像這樣:
| ID | VALUES |
---------------------------------------------------
| 1 | Acadian,Dart,Monarch |
| 2 | Cadillac,Dart,Lincoln,Uplander |
| 3 | Acadian,Freestar,Saturn |
| 4 | Cadillac,Uplander |
| 5 | Dart |
| 6 | Dart,Cadillac,Freestar,Lincoln,Uplander |
那么我的唯一VALUES列表將包含:
這可以單獨使用MySQL調用,還是需要進行一些PHP排序?
謝謝
為什么要將這樣的數據存儲在數據庫中? 您故意取消了首先要使用數據庫的所有廣泛查詢功能。 相反,有一個像這樣的表:
| valueID | groupID | name |
----------------------------------
| 1 | 1 | Acadian |
| 2 | 1 | Dart |
| 3 | 1 | Monarch |
| 4 | 2 | Cadillac |
| 2 | 2 | Dart |
注意Dart
的不同valueID
與Matthew的建議相比。 那些具有相同值的具有相同的valueID(您可能希望稍后參考這些,並且您不想犯同樣的錯誤,不再提前思考,是嗎?)。 然后使主鍵包含valueID和groupID。
然后,為了回答您的實際問題,您可以通過此查詢檢索所有不同的值:
SELECT name FROM mytable GROUP BY valueID
( GROUP BY
在這里應該比DISTINCT
表現更好,因為它不應該進行表掃描)
我建議選擇(和拆分)到臨時表,然后對其進行調用。
首先,在MySQL http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/中顯然沒有拆分功能(這已經三年了,所以有人可以發表評論,如果這已經改變了嗎?)
將所有內容推入臨時表並從那里進行選擇。
如果有可能將這些結構分解為具有這種結構的表,那就更好了:
| ID | VALUES |AttachedRecordID |
---------------------------------------------------------------------
| 1 | Acadian | 1 |
| 2 | Dart | 1 |
| 3 | Monarch | 1 |
| 4 | Cadillac | 2 |
| 5 | Dart | 2 |
等等
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.