2015-10-14 28 views
1

例如,我有如下表:PHP PDO SQlite的單個查詢發現只有一個occurence值,在行與逗號分隔值

id Name - Target 
1 A  B  
2 C  D,G  
3 E  D 
4 F  G,B 
5 L  M,D,B 
6 Q  G,N 

我有一個超過200萬條記錄的數據庫,我想我通過在一行中存儲逗號來表示錯誤。 我的目標是查詢「目標」行上的整個數據庫,以查找唯一的,不重複的值,在我的示例中,查詢應只返回「M」和「N」,因爲「B」,「D」和「 G「正在重複..

是否有單個查詢行來完成此操作?

+1

你是對的。 – Strawberry

+0

@Strawberry對「我認爲我犯了一個錯誤?」 :)謝謝 – Ionut

+1

是的。再次糾正;-) – Strawberry

回答

0

我同意你應該改變你的數據庫模式。

你的問題看起來像重複:

https://stackoverflow.com/a/17942691/4421474

所以你的方法,如果你真的需要一個可能是這樣的:

http://sqlfiddle.com/#!9/0c3ce/4

SELECT 
    SUBSTRING_INDEX(SUBSTRING_INDEX(t1.Target, ',', numbers.n), ',', -1) letter 
FROM 
    numbers 
INNER JOIN t1 
    ON CHAR_LENGTH(t1.Target) 
    -CHAR_LENGTH(REPLACE(t1.Target, ',', ''))>=numbers.n-1 
GROUP BY letter 
HAVING COUNT(*)=1 

請注意,您需要設置numbers表中值從1到最大值的索引target colu你的餐桌上有多少人。

+0

謝謝你的努力。 – Ionut

+0

不客氣 – Alex