mysql - SQL Join 2表没有重复行

标签 mysql sql join duplicates rows

我正在尝试合并 2 个没有重复行的表

表 1 - modx_site_content

|id|pagetitle|introtext|pub_date|
---------------------------------
|3635| name1 |texttextt|17.02.2015
|3636| name1 |texttextt|18.02.2015

表 2 - modx_site_tmplvar_contentvalues

|contentid|tmplvarid|value|
---------------------------
|   3635  |    1    |value1
|   3635  |    1    |value2
|   3636  |    1    |value3

我正在努力做到一切

|id|title|introtext|publishdate|photo|
--------------------------------------
|3635|name1|texttextt|17.02.2015|value1, value2
|3636|name1|texttextt|18.02.2015|value3

但当前结果显示重复行 id 3535

|id|title|introtext|publishdate|photo|
--------------------------------------
|3635|name1|texttextt|17.02.2015|value1
|3635|name1|texttextt|17.02.2015|value2
|3636|name1|texttextt|18.02.2015|value3

我当前的sql结果是

SELECT 
    modx_site_content.id,
    pagetitle as 'title',
    introtext,
    pub_date as 'publishdate',
    modx_site_tmplvar_contentvalues.value as 'photo' 

FROM `modx_site_content`, 
    `modx_site_tmplvar_contentvalues`

WHERE parent IN (1153,3271) 
    AND pub_date>0
    AND `contentid`= modx_site_content.id
    AND `tmplvarid` IN (10, 15, 19) 

Order by `pub_date` DESC LIMIT 20

最佳答案

解决您当前问题的方法是group bygroup_concat():

SELECT c.id, c.pagetitle as title, c.introtext, c.pub_date as publishdate,
       group_concat(cv.value) as sphotos
FROM `modx_site_content` c JOIN
     `modx_site_tmplvar_contentvalues` cv
     ON cv.`contentid`= c.id
WHERE c.parent IN (1153, 3271) AND c.pub_date > 0 AND
      `tmplvarid` IN (10, 15, 19) 
GROUP BY c.id, c.pagetitle, c.introtext, c.pub_date
Order by c.`pub_date` DESC
LIMIT 20;

我还建议:

  • 使用明确的 join 语法。
  • from 子句中定义表别名。
  • 对列引用使用表别名。
  • 不要使用单引号来定义列别名。您不需要转义字符,所以不要同时使用一个。

关于mysql - SQL Join 2表没有重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28587161/

相关文章:

mysql - 列出左表中的所有值

sql - 存在多行时设置列值

sql - SQL Server 2005 DBA学习资源

mysql - SQL 查询中表的复杂连接

php - 如何在php中创建用户名 session ?

mysql - Yii RESTFul,JSON 格式更新和创建

MySQL:LOAD DATA INFILE 语法错误 1064

php - WordPress MySql 插入

sql - 在多个表上插入的更好方法,从 SQL WITH 语句返回多个值

join - CloudFormation 加入标签