mysql中的字符串拆分和子查询

时间:2015-06-16 10:43:58

标签: php mysql database

首先,我在数据库中有1个表。

1)标签:

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

我在数组中有id tags串。像1,3。

现在,

1)从id = 1

的标签中选择名称

结果:theme1 = test1

(现在使用通配符)

2)从标签中选择ID,例如' theme_test1'

结果:1​​,4

(此处' theme_test1'需要从query1获取)

我正在获得输出,但需要使用2个查询。我想在单个查询中执行此操作。

由于

4 个答案:

答案 0 :(得分:2)

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

返回1,4

但是两个查询(或重构)可能是更好的选择

答案 1 :(得分:0)

如果你想获得具有相同值的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;

答案 2 :(得分: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值,此答案无效。

答案 3 :(得分:-1)

也许你可以使用查询:

从标签中选择id,其中name =(从id为1的标签中选择名称)。

您可以尝试该查询。