我的sql语句是要把该用户最近"被回复"过的帖子和最近"回复"过的帖子都找出来其中umc_card_auction是发帖表,umc_card_bid是回帖表,umc_card_auction主键是card_auction_id,umc_card_bid的主键是card_bid_id,外键是card_auction_id,都加了索引,其他字段都没加语句如下SELECT DISTINCT a.card_auction_id,a.member_id, a.card_auction_name,a.df,a.last_reply
FROM umc_card_auction a LEFT JOIN umc_card_bid c
ON a.card_auction_id = c.card_auction_id
WHERE ( a.df = 1 OR a.df = 2 )
AND (a.member_id = 1068 OR c.member_id = 1068)
order by a.last_reply desc有人能帮忙分析下吗???
FROM umc_card_auction a LEFT JOIN umc_card_bid c
ON a.card_auction_id = c.card_auction_id
WHERE ( a.df = 1 OR a.df = 2 )
AND (a.member_id = 1068 OR c.member_id = 1068)
order by a.last_reply desc有人能帮忙分析下吗???
解决方案 »
- SQL 语句查询问题:统计表中的一条记录对应另一个表中多少条记录
- 请教 SQL(在线求教)
- 对比两个数据库
- 關於庫存的處理:用戶錄入錯誤,但已經更新庫存,該怎麼處理?
- 安装SQL 2005出错
- 怎样让查询到的数据不显示出来???
- 这个sql,语句怎么写呀.马上接帖!
- 存储过程中调用如下语句 execute immediate 'create global temporary table test (a char(1))' 提示权限不够,为什么?
- 如何实现两个数据库之间的实时通讯
- 高分求教分布式数据库设计问题??在线等待
- Sqlserver 表结构更改乱码(char到vchar)
- [分享] 用MSSQL查看ACCESS中的数据
SELECT DISTINCT a.card_auction_id,a.member_id, a.card_auction_name,a.df,a.last_reply
FROM umc_card_auction a LEFT JOIN umc_card_bid c
ON a.card_auction_id = c.card_auction_id
WHERE ( a.df = 1 OR a.df = 2 )
AND (a.member_id = 1068 OR c.member_id = 1068)
SELECT
a.card_auction_id,
a.member_id,
a.card_auction_name,
a.df,
a.last_reply
FROM umc_card_auction a
WHERE ( a.df = 1 OR a.df = 2 )
AND a.member_id = 1068
order by a.last_reply desc
不明白,我用的是mysql,但这个地方的语法应该是一样的吧如果不用left join ,那该用户所发的没人回复的帖子就查不出来了。
是否还有必要a.member_id = 1068 OR c.member_id = 1068 两个都要=1608?
我用的mysql,好像没有执行计划a.member_id = 1068 OR c.member_id = 1068是要把1068所发的帖子和回复的帖子都查出来
其实C表没这么用到,改一下吧SELECT a.card_auction_id,a.member_id, a.card_auction_name,a.df,a.last_reply
FROM umc_card_auction a
WHERE a.df in(1,2) and a.member_id = 1068
union all
SELECT a.card_auction_id,a.member_id, a.card_auction_name,a.df,a.last_reply
FROM umc_card_auction a
WHERE a.df in(1,2) and
exists(select 1 from umc_card_bid c where a.card_auction_id = c.card_auction_id and c.member_id = 1068)
order by a.last_reply desc
不对,可能是有重复吧!加上distinct
select distinct * from
(
SELECT a.card_auction_id,a.member_id, a.card_auction_name,a.df,a.last_reply
FROM umc_card_auction a
WHERE a.df in(1,2) and a.member_id = 1068
union all
SELECT a.card_auction_id,a.member_id, a.card_auction_name,a.df,a.last_reply
FROM umc_card_auction a
WHERE a.df in(1,2) and
exists(select 1 from umc_card_bid c where a.card_auction_id = c.card_auction_id and c.member_id = 1068)
) t
order by last_reply desc