是否可以使用mysql将结果添加到结果中?

时间:2015-10-12 10:32:40

标签: php mysql

以下是代码:

// connect and select the database
$smt = $db->query(" SELECT 'one' which, col1, col2 FROM table1 WHERE col1 = '10'
                       UNION ALL
                    SELECT 'two' which, col1, col2 FROM table2 WHERE col1 = '10'
                    ");

while($result = $smt->fetch())  {
    if($result['which'] == 'one'){
        $result['col1'] = 'String: '.$result['col1'];
    }
}

正如您在上面的代码中看到的那样,有一个IF()语句用于组合字符串,结果为col1(仅适用于table1)。现在我想知道,我可以使用MySQL做到这一点吗? (目前我使用PHP执行此操作)

换句话说,我可以在MySQL中这样做吗?

if($result['which'] == 'one'){
    $result['col1'] = 'String: '.$result['col1'];
}

3 个答案:

答案 0 :(得分:3)

如果您知道要放在第一个select语句的第一列前面的字符串,并且它不是动态的,那么您可以在第一列前面连接所需的字符串:< / p>

$smt = $db->query("SELECT CONCAT('String:',col1), col2 FROM table1 WHERE col1 = '10'
                   UNION ALL
                SELECT CONCAT('String2: ',col1), col2 FROM table2 WHERE col1 = '10'
                ");

答案 1 :(得分:1)

您可以使用CONCAT功能为查询结果添加固定字符串:https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat

在您的示例中,我认为您所追求的是CONCAT('String: ', col1)

答案 2 :(得分:1)

您可能需要使用CASE和CONCAT。尝试类似下面的内容

 $smt = $db->query(" SELECT 'one'which, CASE( WHEN (which = 'one') THEN CONCAT('String:',which) ELSE col1 END) as col1, col2 FROM table1 WHERE col1 = '10'
                   UNION ALL
                SELECT 'two' which, CASE( WHEN (which = 'two') THEN CONCAT('String:',which) ELSE col1 END) as col1, col2 FROM table2 WHERE col1 = '10'
                ");