要不创建一个视图?CREATE VIEW view_records AS
SELECT room_id,send_id,recevie_id FROM room_records WHERE send_id LIKE '%-%' 
UNION ALL 
SELECT room_id,recevie_id,send_id FROM room_records WHERE recevie_id LIKE '%-%'";SELECT * FROM view_records

解决方案 »

  1.   

    才疏学浅,看得半天没有明白为什么要建临时表还望高手解释:SELECT room_id,send_id,recevie_id FROM room_records WHERE send_id LIKE '%-%' OR recevie_id LIKE '%-%'";第一个不明白的是:你都是从room_records这里面取数据,为什么要UNION ALL一下?第二个不明白的是:
    $query = "SELECT * FROM temp_records";
    你都不加限制条件,为什么要建临时表?
      

  2.   

    我给的简化了很多虽然都是从那个表中取数据,但某个用户的id可能出现在send_id中,也可能出现在recevie_id中,为了方便统计,就做了个临时表
    SELECT cm.*,tr.* FROM c_members cm LEFT JOIN 
    (SELECT COUNT(DISTINCT room_id) ctotal,COUNT(DISTINCT recevie_id) service,COUNT(send_id) count,send_id 
      FROM temp_records GROUP BY send_id)tr ON cm.id=tr.send_id
    这个的作用是: 查出c_members表中所有的人来,并得到这个人在几个房间聊过天,跟几个人聊过天,总共聊了几句话我写这个查询语句实在不能一次查出来,我就想到了搞临时表以前写mysql4下的语句,现在mysql5增加了很多功能,我都是一步一步试的,肯定有很多不合理的地方
      

  3.   

    我写那个UNION的目的是把这个人的ID都放到send_id字段,他的对方放到recevie_id字段