Mysql SQL内部联接表

Mysql SQL内部联接表,mysql,sql,database,Mysql,Sql,Database,我对我的SQL查询有一个小问题。我从表cab_doc中选择descripçao、dtinicamp和从lin_doc中选择quantidade、id_estab,然后我内部加入信息。但这并没有以我想要的方式显示数据 我的问题是: 输出: 我想要达到的目标: xxxxx 12-05-12 1000 01 1222 03 这可能吗?试试这个 SELECT descricao, dt_ini_camp, quantidade FROM cab_doc INN

我对我的SQL查询有一个小问题。我从表cab_doc中选择descripçao、dtinicamp和从lin_doc中选择quantidade、id_estab,然后我内部加入信息。但这并没有以我想要的方式显示数据

我的问题是:

输出:

我想要达到的目标:

xxxxx 12-05-12  1000  01
                1222  03
这可能吗?

试试这个

SELECT descricao, dt_ini_camp, quantidade
  FROM cab_doc INNER JOIN lin_doc ON cab_doc.id=lin_doc.id_cab_doc
 GROUP BY ROLLUP(descricao, dt_ini_camp)
您必须放弃id列或以其他方式将其带到

谷歌“分组汇总”并纠正语法,如果我错了

以下内容可供您参考:

MySQL手册 MySQL论坛
您真的应该在应用程序层而不是数据库中执行这种类型的操作。原因是结果集实际上不是SQL结果集,因为列缺少值。例如,突然之间,结果集的顺序很重要

你可以这样做。在MySQL中,最简单的方法是使用变量:

SELECT if(@d = descricao and @dt = dt_ini_camp, '', descricao) as descricao,
       if(@d = descricao and @dt = dt_ini_camp, '', dt_ini_camp) as dt_ini_camp,
       quantidade, id_estab,
       @d := descricao,  @dt := dt_ini_camp
FROM cab_doc INNER JOIN
     lin_doc
     ON cab_doc.id = lin_doc.id_cab_doc CROSS JOIN
     (select @d := '', @dt := '') const
ORDER BY descricao, dt_ini_camp, quantidade, id_estab;

1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用MySQL的正确语法,我以为您使用的是Oracle。你应该提到..让我看看MySQL能做些什么我们很快就会忘记Y2K的教训!您想要实现的结果是否应该与当前输出中列出的12-05-14类似?在我看来,您通常应该将这些表示问题委托给表示层,让DBMS只返回数据。然而,我可能是一个老式的少数派。
SELECT descricao, dt_ini_camp, quantidade
  FROM cab_doc INNER JOIN lin_doc ON cab_doc.id=lin_doc.id_cab_doc
 GROUP BY ROLLUP(descricao, dt_ini_camp)
SELECT if(@d = descricao and @dt = dt_ini_camp, '', descricao) as descricao,
       if(@d = descricao and @dt = dt_ini_camp, '', dt_ini_camp) as dt_ini_camp,
       quantidade, id_estab,
       @d := descricao,  @dt := dt_ini_camp
FROM cab_doc INNER JOIN
     lin_doc
     ON cab_doc.id = lin_doc.id_cab_doc CROSS JOIN
     (select @d := '', @dt := '') const
ORDER BY descricao, dt_ini_camp, quantidade, id_estab;