求大神解答一个数据库语句的问题

php中文网
发布: 2016-06-23 14:04:39
原创
821人浏览过

SELECT `id` , `time` , `title`FROM `think_infor`WHERE `type` LIKE '$k-%'			UNION ALL			SELECT `id` , `time` , `title`FROM `think_infor2`WHERE `type` LIKE '$k-%'			ORDER BY `time` DESCLIMIT 0,6
登录后复制


用这个语句可以查询到表1和表2的最新6条信息。但是怎么判断记录是哪个表返回的?
或者有什么其他的方法可以实现,不想多次查询

AI建筑知识问答
AI建筑知识问答

用人工智能ChatGPT帮你解答所有建筑问题

AI建筑知识问答 22
查看详情 AI建筑知识问答

回复讨论(解决方案)

你带上表名不就行了?

不过你能得到 表1和表2的最新6条信息 吗?

SELECT A.id AS aid , A.time AS atime , A.title AS atitle, B.id AS bid , B.time AS btime , B.title AS btitle
FROM think_infor AS A, think_infor2 AS B
WHERE A.type LIKE '$k-%' AND B.type=A.type
ORDER BY A.time DESC LIMIT 0,6

SELECT A.id AS aid , A.time AS atime , A.title AS atitle, B.id AS bid , B.time AS btime , B.title AS btitle
FROM think_infor AS A, think_infor2 AS B
WHERE A.type LIKE '$k-%' AND B.type=A.type
ORDER……


这个差不多,但是A表的记录是会有重复记录

SELECT `id` , `time` , `title`, 1 as cpfromFROM `think_infor`WHERE `type` LIKE '$k-%'			UNION ALL			SELECT `id` , `time` , `title` , 2 as cpfromFROM `think_infor2`WHERE `type` LIKE '$k-%'			ORDER BY `time` DESCLIMIT 0,6
登录后复制

这个语句写的不是很清楚

引用 2 楼 yiwusuo 的回复:SELECT A.id AS aid , A.time AS atime , A.title AS atitle, B.id AS bid , B.time AS btime , B.title AS btitle
FROM think_infor AS A, think_infor2 AS B
WHERE A.type LIKE……
ORDER BY A.time DESC 后面加上:having count(A.id)=1 
不就没重复了吗

我自己都觉得乱了,我还是说一下我想要的东西吧


有A表,B表,结构相同,数据不同,我想同时模糊查询一个字段`type`,选取两表中符合条件的前6条记录(根据`time`排序)

你自己写的不就可以吗?

SELECT `id` , `time` , `title`, 'think_infor' as tbl_name  FROM `think_infor`  WHERE `type` LIKE '$k-%'UNIONSELECT `id` , `time` , `title`, 'think_infor2'   FROM `think_infor2`  WHERE `type` LIKE '$k-%'ORDER BY `time` DESCLIMIT 0,6
登录后复制

加了个输出字段 tbl_name 用以区分数据来源
union all 改成 union 用于避免出现重复记录。不多加了来源就重复的也不重复了

你自己写的不就可以吗?


SQL code
?



123456789

SELECT `id` , `time` , `title`, 'think_infor' as tbl_name   FROM `think_infor`   WHERE `type` LIKE '$k-%'UNIONSELECT `id` , `time` , `title`, 'think_in……

SELECT 不存在的字段这也可以

你是指 'think_infor' as tbl_name 这个吗?

那么你认为 SELECT `id` as iidd  FROM `think_infor` 这样可以吗?
肯定可以了,不就是给个名字么

接下来就不说了

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号