我正在通过许多列的值获取行

时间:2019-01-25 12:12:40

标签: mysql distinct

我想通过带有search(LIKE)条件的关键字来获取一些帖子。我收到的行超出了我的预期!

我尝试了DISTINCT,但没有帮助, mysql5.7 x64,

SELECT DISTINCT ct.id,
                ct.cat_link,
                pt.post_id,
                lng_ct.cat_title,
                pt.post_title,
                pt.post_link,
                pt.post_content,
                pt.post_tags,
                pt.post_description,
                pt.post_author,
                pt.post_image,
                pt.post_date,
                pt.post_cat_id
FROM `cates_of_site` AS ct,
     en_posts_of_site AS pt,
     `en_cat_info` AS lng_ct,
     `en_subcates_of_site` AS sub_ct
WHERE (pt.post_description LIKE '%hello%'
       OR pt.post_tags LIKE '%hello%'
       OR pt.post_title LIKE '%hello%')
  AND ct.id = sub_ct.parent_id
  AND pt.post_cat_id = sub_ct.subcat_id
LIMIT 0,10

en_posts_of_site表中只有一行。但我得到7行。为什么?

en_posts_of_site:

en_posts_of_site

en_subcates_of_site:

en_subcates_of_site

en_cat_info:

en_cat_info

网站类别:

cates_of_site

en_posts_of_site表中只有一行。但我得到7行。为什么?

1 个答案:

答案 0 :(得分:0)

首先,不要使用旧版联接语法。此外,由于要联接所有表,因此要根据联接的表将结果相乘。

如果您不希望结果成倍增加,则需要使用exist。或者,您可以考虑使用group by进行重复数据删除。但是,“ Exists”将具有更高的性能。