从多行中选择多个值

时间:2014-11-17 10:59:09

标签: mysql sql

无法弄清楚如何得到这个结果:

ProductID       Variantno
53121           5197, 5198,5199

从这个数据集中。

ProductID       Variantno
53121           5197
53121           5198
53121           5199

小组尝试但没有好结果,总sql noob ......

4 个答案:

答案 0 :(得分:2)

试试这个..

SELECT 
  ProductID,
  GROUP_CONCAT(Variantno)
FROM tbl
GROUP BY ProductID

答案 1 :(得分:0)

select ProductID , group_concat(Variantno)
from table
group by ProductID

答案 2 :(得分:0)

试试这个:

WITH cte AS (
    SELECT 
        ProductID,
        CAST('<r>' + REPLACE(variantNo, ',', '</r><r>') + '</r>' AS XML) AS VariantNos
    FROM TestTable
)
SELECT 
    ProductID,
    xTable.xColumn.value('.', 'VARCHAR(MAX)') AS VariantNo
FROM cte
CROSS APPLY VariantNos.nodes('//r') AS xTable(xColumn) 

答案 3 :(得分:0)

不显示您的代码和数据库。我假设你正在使用php和mysql。 我已经运行并测试了这段代码,但它确实有效。这意味着它会为你工作。我的连接是PDO。如果仍然有问题,请给我一个喊叫

<?php



// pdo connection



$db = new PDO (

    'mysql:host=localhost;dbname=sectona_db;charset=utf8', 

    'root', // username



    'root90' // password

);

?>




                    <?php

Echo 'Data Output:<br>';
include("pdo.php");

$result = $db->prepare("SELECT * FROM product where id='123'");
        $result->execute(array());



while ($r = $result->fetch()) 
                       {
//$data = htmlentities($r['product'], ENT_QUOTES, "UTF-8");






?>

<?php echo htmlentities($r['product'], ENT_QUOTES, "UTF-8");?>,



<?php } ?>