以下是代码:
// 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'];
}
答案 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'
");