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

解决方案 »

  1.   

    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
      

  2.   

    SELECT `id` , `time` , `title`, 1 as cpfrom
    FROM `think_infor`
    WHERE `type` LIKE '$k-%'

    UNION ALL

    SELECT `id` , `time` , `title` , 2 as cpfrom
    FROM `think_infor2`
    WHERE `type` LIKE '$k-%'

    ORDER BY `time` DESC
    LIMIT 0,6
      

  3.   

    ORDER BY A.time DESC 后面加上:having count(A.id)=1 
    不就没重复了吗
      

  4.   

    我自己都觉得乱了,我还是说一下我想要的东西吧
    有A表,B表,结构相同,数据不同,我想同时模糊查询一个字段`type`,选取两表中符合条件的前6条记录(根据`time`排序)
      

  5.   

    你自己写的不就可以吗?SELECT `id` , `time` , `title`, 'think_infor' as tbl_name
      FROM `think_infor`
      WHERE `type` LIKE '$k-%'
    UNION
    SELECT `id` , `time` , `title`, 'think_infor2' 
      FROM `think_infor2`
      WHERE `type` LIKE '$k-%'
    ORDER BY `time` DESC
    LIMIT 0,6
    加了个输出字段 tbl_name 用以区分数据来源
    union all 改成 union 用于避免出现重复记录。不多加了来源就重复的也不重复了
      

  6.   


    SELECT 不存在的字段这也可以
      

  7.   

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