0

情况如下:我正在对非规范化表运行查询(在 MySQL 中)。不是我建的,别怪我。此表中的一列由逗号分隔的 image_id 列表组成。

这些图像 ID 对应Primary Key于第二个表内。

我正在尝试LEFT JOIN在我的SQL, 中进行操作,以获取附加到内容的图像:

LEFT JOIN image ON image.id IN (content.imageIDs)

这个错误因为content.imageID没有用引号括起来,而只是12345,67890等。

如果我可以将这些单独的 ID 用引号括起来,它应该可以工作。但是,我不知道该怎么做。

LEFT JOIN image ON image.id IN (REPLACE(content.imageIDs, ',', '\',\''))

这让我更接近,但现在我错过了开头和结尾的引号。我尝试使用CONCAT()添加这些,这不会导致错误,但也没有结果。

4

1 回答 1

2

在 MySQL 中执行此操作的“正常”方法是:

LEFT JOIN image ON find_in_set(image.id, content.imageIDs) > 0

在 MySQL 和许多其他数据库中工作的一般方式是:

LEFT JOIN image on content.imageIDs like concat('%,', image, ',%') 

(尽管字符串连接函数通常因数据库而异)。

于 2013-06-07T19:08:16.770 回答