Mysql加入IN语句

时间:2017-10-25 08:34:43

标签: mysql sql join

我有两个表用于新闻项目,一个用于图像。

新闻表结构

  • ID - 数字
  • newstitle - text
  • newsdesc - text
  • newsimages - text

图像表格结构

  • ID - 数字
  • medianame - text

所以常见的新闻记录是: ID = 1,newstitle =“asdasfa”,newsdesc =“afsdgsgs”,newsimages =“1,2”

图像表记录将是: ID = 1,medianame =“image.jpg”

我正在尝试创建一个select语句,该语句从新闻表中读取数据,但是为我提供了图像表中的图像名称而不是ID。

如果还有其他事情遗漏让我知道

由于

2 个答案:

答案 0 :(得分:0)

您可以使用FIND_IN_SET功能

示例:

SELECT `news`.`ID`, `news`.`newstitle`, `news`.`newsdesc`,
       GROUP_CONCAT(`images`.`medianame` SEPARATOR ',') AS `newsimages`
FROM `news`
LEFT JOIN `images` ON FIND_IN_SET(`images`.`ID`,`news`.`newsimages`)
GROUP BY `news`.`ID`

P.S。如果你有(或计划拥有)大量行,那么你必须规范化数据。

答案 1 :(得分:-2)

似乎很简单

SELECT N.*, I.medianame FROM News_Table N left join Image_Table I 
ON N.Id=I.Id

我假设表名分别是News_table和Image_table,并且一个新闻片可能有多个图像。