gpt4 book ai didi

MySQL:从多个表中选择*,其中column1或column2 =查询

转载 作者:行者123 更新时间:2023-11-29 10:55:39 25 4
gpt4 key购买 nike

假设我有一个包含 4 个表的数据库:

  • 个人电脑、笔记本电脑、平板电脑、智能手机

每个表都包含以下列:

  • ID、品牌、型号

如何使用单个查询来显示基于用户输入的品牌或型号的所有表中的所有结果?在伪代码中,类似这样:

 SELECT * 
FROM {all tables}
WHERE {brand or model} LIKE %user_search%;

这样用户就可以通过输入品牌或型号来搜索任何设备。例如。输入 apple 将显示所有 Apple 智能手机和平板电脑。输入型号将显示具有该型号的所有设备,甚至来自不同品牌的设备。

最佳答案

在MySQL中,最好的方法是独立运行每个查询并使用union all:

SELECT * FROM t1 WHERE brand LIKE '%user_search%' OR model LIKE '%user_search%'
UNION ALL
SELECT * FROM t2 WHERE brand LIKE '%user_search%' OR model LIKE '%user_search%'
UNION ALL
SELECT * FROM t3 WHERE brand LIKE '%user_search%' OR model LIKE '%user_search%'
UNION ALL
SELECT * FROM t4 WHERE brand LIKE '%user_search%' OR model LIKE '%user_search%';

很容易将其写为:

select *
from ((select * from t1) union all
(select * from t2) union all
(select * from t3) union all
(select * from t4)
) t
where brand like '%user_search%' or model like '%user_search%';

但是,这会具体化子查询,从而产生额外的开销。

此外,如果性能是一个问题,您可能需要考虑全文索引。

关于MySQL:从多个表中选择*,其中column1或column2 =查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43071806/

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