Mysql SQL重复行SQL查询
我的SQL语句有一个问题,它打印的结果有重复的行,这很烦人,下面是我的SQL语句:Mysql SQL重复行SQL查询,mysql,sql,database,postgresql,Mysql,Sql,Database,Postgresql,我的SQL语句有一个问题,它打印的结果有重复的行,这很烦人,下面是我的SQL语句: SELECT week_day, exam_date , s.name , l.lgna_name ,f.first_name FROM fci_exam_time_table_line, fci_subject s , fci_staff f, lgna_lgna l WHERE exam_id =%d GROUP BY week_day, exam_date , s.name , l.lgna_name
SELECT
week_day,
exam_date ,
s.name ,
l.lgna_name
,f.first_name
FROM
fci_exam_time_table_line,
fci_subject s ,
fci_staff f,
lgna_lgna l
WHERE
exam_id =%d
GROUP BY
week_day,
exam_date ,
s.name ,
l.lgna_name ,
f.first_name
ORDER BY
exam_date
它的打印方式如下所示
week_day| exam_date |name|lgna_name|first_name
"monday";"2015-04-13";"12"; "12" ;"12"
"monday";"2015-04-13";"12"; "12" ;"323"
"monday";"2015-04-13";"12"; "232" ;"12"
"monday";"2015-04-13";"12"; "232" ;"323"
"monday";"2015-04-14";"12"; "12" ;"12"
"monday";"2015-04-14";"12"; "12" ;"323"
"monday";"2015-04-14";"12"; "232" ;"12"
"monday";"2015-04-14";"12"; "232" ;"323"
我希望它能像这样打印:
week_day| exam_date |name|lgna_name|first_name
"monday";"2015-04-13";"12"; "12" ;"12,323"
"monday";"2015-04-13";"12"; "232";"12,323"
"monday";"2015-04-14";"12"; "12" ;"12,323"
"monday";"2015-04-14";"12"; "232" ;"12,323"
使用
Group\u Concat
功能,从Group by
SELECT week_day,
exam_date,
s.name,
l.lgna_name,
Group_conact(f.first_name, ',')
FROM fci_exam_time_table_line,
fci_subject s,
fci_staff f,
lgna_lgna l
WHERE exam_id =% d
GROUP BY week_day,
exam_date,
s.name,
l.lgna_name
ORDER BY exam_date
对于Postgres
使用array\u to\u string
和array\u agg
。请查收解释
试着加入一些连接条件。你能告诉我怎么做吗?
按考试日期分组
和分组(名字)
nice..你能告诉我postgersql中的等效项吗?我在这两个数据库中都有相同的数据库(mysql和postgres)在2台机器中运行,你能在PASGESQL中发布等价物吗?这些表需要正确连接。交叉连接四个表非常昂贵。@ErwinBrandstetter-根据样本数据,这显然是solution@Fireblade:这是一个非常糟糕、潜在危险的例子。任何人都不应该使用它。如果每个表中有多行,则四个表的交叉连接可能会使服务器暂停。只需添加连接条件。问题是缺少修复查询的基本信息。
select ...
array_to_string(array_agg(f.first_name), ',')
FROM fci_exam_time_table_line,
fci_subject s,
fci_staff f,
lgna_lgna l
WHERE exam_id =% d
GROUP BY week_day,
exam_date,
s.name,
l.lgna_name
ORDER BY exam_date