1
catfan 2014-06-14 23:36:04 +08:00 1
用 JOIN 语法啊
|
2
kmvan OP 我只能查到一个。。。如下,我只能查到作者。。。不能同时查到接收者..
SELECT msg.*, users.name FROM message msg, users WHERE msg.ID = 1 and msg.author = users.ID |
3
yangqi 2014-06-14 23:39:52 +08:00 1
|
5
Seans 2014-06-15 00:08:33 +08:00 1
|
6
ipconfiger 2014-06-15 00:13:15 +08:00
考虑过效率吗,骚年
|
8
Seans 2014-06-15 00:28:51 +08:00
|
10
Seans 2014-06-15 01:00:05 +08:00
@yangqi 我不是专业的dba,也不知道该怎样来比较两条sql的效率,是看执行时间吗?只是之前写left join的时候在大表查询的时确实很慢
|
11
yangqi 2014-06-15 01:40:30 +08:00
@Seans 最简单的explain下可以看出来, 然后可以用profile来比较.
你第二种写法还是Join, 只不过是inner join, 而且括号中的select会生成一个临时表, 没有索引), 所以效率反而会更低 |
12
alore 2014-06-16 16:01:51 +08:00
select *,
(select name from users where id=a.author) as author_name, (select name from users where id=a.receiver) as receiver_name from messages as a 效率问题,不用多想.等你上百万数据,上百万流量时再说. |