如何使用LIKE同时查询blog和videos两张表的content字段
解决方法
你之前用JOIN的方式不对,因为JOIN是把两张表中content字段完全相等的行关联后返回,而你要的是两张表各自包含指定内容的记录合并起来,应该用UNION或UNION ALL来实现:
基础写法(返回来源表和匹配的content)
SELECT 'blog' AS source_table, content FROM blog WHERE content LIKE "%Data%" UNION ALL SELECT 'videos' AS source_table, content FROM videos WHERE content LIKE "%Data%"
说明
source_table字段用来标记数据来自哪张表,方便你区分结果;UNION ALL会保留所有匹配的记录,包括两张表中重复的内容,性能更好;如果需要自动去除重复行,可以把UNION ALL改成UNION。
返回全字段的写法
如果你需要返回表中所有字段,确保两张表的字段数量、类型对应即可:
SELECT 'blog' AS source_table, * FROM blog WHERE content LIKE "%Data%" UNION ALL SELECT 'videos' AS source_table, * FROM videos WHERE content LIKE "%Data%"
如果两张表字段结构不一致,建议明确指定要查询的字段,比如:
SELECT 'blog' AS source_table, id, content, create_time FROM blog WHERE content LIKE "%Data%" UNION ALL SELECT 'videos' AS source_table, id, content, upload_time FROM videos WHERE content LIKE "%Data%"
内容的提问来源于stack exchange,提问作者Devman
相关产品推荐
相关产品推荐

