如何解决在不同的mysql表中搜索不同的列
我一一执行这两个查询,但我需要将这两个查询作为一个查询同时执行,并从 mysql 数据库中获取一次结果
我尝试了 UNION SELECT 但由于从不同的表中选择了不同的 coulmns (model,modelsnumber) 它不起作用
有没有人知道sql查询结构来帮我解决这个问题?
查询 1
$query = "SELECT post_id,SUBSTR(post_name,1,30) as post_name,price,username,poster_folder_id FROM realestate
USE INDEX(idx_post_id,idx_name,idx_price,idx_username,idx_poster_folder_id)
WHERE post_name LIKE ? OR description LIKE ? OR price LIKE ? ORDER BY post_id DESC LIMIT 10";
查询 2
$query = "SELECT post_id,poster_folder_id FROM cars
USE INDEX(idx_post_id,idx_poster_folder_id)
WHERE post_name LIKE ? OR description LIKE ? OR model LIKE ? OR modelsnumber LIKE ? OR price LIKE ? ORDER BY post_id DESC LIMIT 10";
我试过了
$query = "SELECT post_id,poster_folder_id FROM realestate
WHERE post_name LIKE ? OR description LIKE ? OR price LIKE ? ORDER BY post_id DESC LIMIT 10
UNION
SELECT post_id,poster_folder_id FROM cars
WHERE post_name LIKE ? OR description LIKE ? OR model LIKE ? OR modelsnumber LIKE ? OR price LIKE ? ORDER BY post_id DESC LIMIT 10";
解决方法
在 UNION 中使用 ORDER BY 和/或 LIMIT 的单独子查询必须用括号括起来:
$query = "
(SELECT post_id,SUBSTR(post_name,1,30) as post_name,price,username,poster_folder_id
FROM realestate
WHERE post_name LIKE ? OR description LIKE ? OR price LIKE ? ORDER BY post_id DESC LIMIT 10
)
UNION
(SELECT post_id,poster_folder_id
FROM cars
WHERE post_name LIKE ? OR description LIKE ? OR model LIKE ? OR modelsnumber LIKE ? OR price LIKE ? ORDER BY post_id DESC LIMIT 10
)";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。