gpt4 book ai didi

mysql - 将 3 个 MySQL 查询合并为 1 个查询

转载 作者:行者123 更新时间:2023-11-29 05:25:58 24 4
gpt4 key购买 nike

我正在尝试在我的站点中构建搜索功能。如果我想搜索照片的标题、文本或标签是否包含“黑色”一词,我有以下 3 个查询:

SELECT id 
FROM photos
WHERE title LIKE '%black%'
AND status = 'A'

SELECT id
FROM photos
WHERE text LIKE '%black%'
AND status = 'A'

SELECT DISTINCT(photos.id)
FROM photos, photo_tags, tags
WHERE tags.tag LIKE '%black%'
AND photo_tags.keyid = tags.id
AND photos.id = photo_tags.catid
AND photos.status = 'A'

是否可以将所有这些合并到 1 个查询中?我知道我可以加入前两个,但是将它与第三个结合起来对我来说似乎太复杂了。我尝试加入 OR,但我认为我做的不对。

此外,我希望它不会出现重复的结果,因此如果一张照片的标题为“黑色”且标签为“黑色”,它只会显示一次。

顺便说一句,表格看起来像这样,keyid 与 tag.id 相关,catid 与 photos.id 相关

photos

+----+-----------+-----------------+
| id | title | text |
+----+-----------------------------+
| 1 | blue pic | black and blue |
| 2 | red pic | red and green |
| 3 | green pic | green and white |
| 4 | white pic | white and black |
| 5 | black pic | black and gold |
+----+-----------+-----------------+

tags

+----+-------+
| id | tag |
+----+-------+
| 1 | blue |
| 2 | table |
| 3 | chair |
| 4 | red |
| 5 | black |
+----+-------+

photo_tags

+-------+-------+
| keyid | catid |
+-------+-------+
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
| 4 | 2 |
| 5 | 5 |
+-------+-------+

最佳答案

看来您应该加入表格,然后按您在两个表格中查找的文本进行过滤:

SELECT DISTINCT p.id FROM photos p
JOIN photo_tags pt ON pt.cat_id = p.id
JOIN tags t ON pt.key_id = t.id
WHERE (p.title LIKE '%black%' OR t.tag LIKE '%black%') AND p.status = 'A'

关于mysql - 将 3 个 MySQL 查询合并为 1 个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20247748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com