2015-06-16 65 views
3

首先,我在數據庫中有1個表。mysql中的字符串拆分和子查詢

1)標籤:

id name 
1  theme1=test1 
2  theme1=test2 
3  theme1=test3 
4  theme2=test1 
5  theme2=test2 
6  theme2=test3 

,我已經在陣列的tagsid一羣。像1,3。

現在,

1)從標籤選擇名稱其中id = 1

結果:THEME1 = TEST1

(現在使用通配符)

2)選擇從標籤ID其中名稱像 'theme_test1'

結果:1,4

(這裏「theme_test1」需要從QUERY1採取)

我得到正確的輸出,但需要使用2個query.I要做到這一點單查詢。

感謝

+0

那麼你爲單個查詢做了什麼? –

+0

我用上述2查詢來獲取第二query.so i的輸出需要在一個查詢執行該任務 – hemsbhardiya

+0

'THEME1 = test1'或'theme_test1' –

回答

2
SELECT id FROM tags WHERE name LIKE ( 
    SELECT CONCAT(SUBSTRING(name,1,5),'__',SUBSTRING(name,8)) FROM tags WHERE id=1 
) 

返回1,4

但是兩個查詢(或重構)可能是一個更好的選擇

+0

我不知道,但不爲我工作。 – hemsbhardiya

+0

我想我現在必須使用2個查詢 – hemsbhardiya

+0

@SanketSorathiya糟糕,語法錯誤,請參閱ammendment – Steve

0

如果whant獲得具有相同id的值,你可以試試這個:

SELECT t2.* FROM yourtable t1 
JOIN youtable t2 on ON t2.name like concat(substr(t1.name,1,5), '%', substr(t1.name,8)) 
WHERE t1.id=1; 
+0

我不知道爲什麼,但不爲我工作 – hemsbhardiya

+0

也許你必須使用%而不是_ – codeneuss

-1

也許你可以使用查詢:

從標籤

選擇ID,其中name =(從id = 1的標籤中選擇名稱)。

您可以嘗試該查詢。

+0

它會返回相同的結果人 – hemsbhardiya

0

獲得更好的性能使用:

SELECT t.id 
FROM r 
INNER JOIN r AS t ON t.name LIKE CONCAT('theme_=test', SUBSTRING(r.name,-1)) 
WHERE r.id = '1' 

r是你的表這個案例。

備註:如果您有theme1 = test1和theme1 = test10值,此答案無效。