我目前有两个表:
CREATE TABLE files_list
(
'listid' INT,
'name' VARCHAR(25),
'synonym' VARCHAR(25),
'description' VARCHAR(25)
);
CREATE TABLE files_tags
(
'tag_name' VARCHAR(25),
'listid' INT
);
Run Code Online (Sandbox Code Playgroud)
如果有人使用关键字"龙球",目前,我使用以下查询来搜索my_list以查找可能的匹配项:
SELECT *
FROM files_list
WHERE name LIKE '%dragon%'
OR synonym LIKE '%dragon%'
OR description LIKE '%dragon%'
OR name LIKE '%ball%'
OR synonym LIKE '%ball%'
OR description LIKE '%ball%'
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用一个查询搜索两个表.我想向用户显示搜索结果中的以下数据:名称,同义词,描述和所有标签.
我的问题
1.有没有办法让当前的mysql查询更短?2.如何将其与files_tags表格结合使用,以显示files_list哪些行匹配files_tags但不在files_list?- 显示files_tags`中files_list匹配的files_list, but may not in行?
您可以在http://hsbsitez.com/上查看当前显示的结果
使用 union 实际获取每个联合查询所需的列时要小心。在这种情况下,子查询似乎更有意义:
SELECT name, synonym, description FROM files_list WHERE
name LIKE '%dragon%' OR synonym LIKE '%dragon%' OR description LIKE '%dragon%'
OR name LIKE '%ball%' OR synonym LIKE '%ball%' OR description LIKE '%ball%'
OR listid IN (SELECT listid FROM files_tags WHERE tag_name='dragon' OR tag_name='ball');
Run Code Online (Sandbox Code Playgroud)
一些其他问题:当您说要向用户显示“所有标签”时,您是指给定 listid 存在的所有标签吗?或者只是那些匹配的?如果像“%dragon%”这样的描述,dragon 是您想要返回的标签之一,即使它不在 file_tags 中?
| 归档时间: |
|
| 查看次数: |
1061 次 |
| 最近记录: |