2012-02-08 63 views
1

是否可能在MySQL声明中回显在mysql声明里面回声?

例如:

SELECT p.ID,p.post_title,p.guid,p.post_name,p.post_status,name,taxonomy, <?php echo "TEXT HERE"?> GROUP_CONCAT(DISTINCT name ORDER BY name DESC SEPARATOR '|') AS 'tags',

这是可能得到这样的结果{标记1 |标签2 |标签3}

回答

1

这听起来像this question可能是相关的。然而,这应该做你想要什么:

-- Table structure: 
-- post(_id_), tag (_id_, tag), post_tag(post*, tag*) 

SELECT post.id, 
    CONCAT('{', GROUP_CONCAT(distinct tag.tag order by tag.tag separator '}{'), '}') AS tags 
FROM post 
JOIN post_tag ON post.id = post_tag.post 
JOIN tag ON post_tag.tag = tag.id 
GROUP BY post.id 

将返回:

+----+--------+ 
| id | tags | 
+----+--------+ 
| 1 | {A}{B} | 
| 2 | {B}{C} | 
| 3 | {C} | 
+----+--------+ 

确保包括GROUP BY条款。我确实添加了外键引用,但我不确定MySQL是否实际使用它们。

+0

哇谢谢先生它的作品像一个魅力谢谢你非常非常有趣。我承认我有困难在查询中非常感谢你:) – 2012-02-08 14:14:54

+1

没问题,我今天没有听说过'GROUP_CONCAT',所以我也学到了一些新的东西:) – Ross 2012-02-08 14:17:44

+0

哇,这样的乐趣先生,我们都学到了这个话题再次感谢您先生,让我的一天欢呼! :) – 2012-02-08 16:59:04

0

假设你正在写在PHP这个查询在MySQL执行,你可以附上SQL在双引号,这将导致变量解析:

$sql = " SELECT p.ID ... taxonomy, $someVariable GROUP_CONCAT ... "; 

或(首选IMO)使用单报价并连接它(也使得它更容易清洁它内联,如下所示)

$sql = ' SELECT p.ID ... taxonomy, ' . mysql_real_escape_string($someVariable) . ' GROUP_CONCAT ... '; 
+0

感谢您的回复先生,但罗斯采取了什么林寻找感谢先生 – 2012-02-08 14:19:53