Php Mysql双查询请求
我有一张桌子:Php Mysql双查询请求,php,mysql,Php,Mysql,我有一张桌子: table_1 id time 1 2012-03-05 12:50:00 2 2012-03-05 12:51:00 3 2012-03-05 12:52:00 4 2012-03-05 12:53:00 table_2 userid level 100 1 256 2 112 3 400 2 15 1 第一项请求: $sql = 'SELECT `id`, `time` FROM tabl
table_1
id time
1 2012-03-05 12:50:00
2 2012-03-05 12:51:00
3 2012-03-05 12:52:00
4 2012-03-05 12:53:00
table_2
userid level
100 1
256 2
112 3
400 2
15 1
第一项请求:
$sql = 'SELECT `id`, `time` FROM table_1 WHERE `time` > NOW() ORDER BY `id` DESC LIMIT 1';
第二项请求:
$sql = 'SELECT COUNT(*) FROM table_2 WHERE `userid` = 100 LIMIT 1';
如何将这两个请求合并为一个请求
例如,此表:
id time count
1 2012-03-05 12:53:00 1
或
如果我们在表2中没有任何记录
谢谢 将两个非常简单、不相关的查询组合成一个更复杂的查询并不是获得性能的最佳方法。减少一次往返可能会稍微提高您的效率,但查询很快就会变得无法维护
相反,为了避免额外的往返时间,可以使用类似这样的方法将它们同时发送到数据库。这意味着您可以保持查询的简单性,并且仍然只获得到数据库的一次往返。因为它们没有任何关联,只是简单的暴力,我会这样做。不实用,但我会这样做
SELECT
`id`,
`time`,
( select COUNT(*)
FROM table_2
WHERE `userid` = 100 ) as UserCount
FROM
table_1
WHERE
`time` > NOW()
ORDER BY
`id` DESC
LIMIT 1
为什么首先要合并两个完全不相关的查询?想要更好的表现吗?是的。更好的性能。不确定这是否是上述要求,但请注意,如果没有“时间”条目>NOW()@JoachimIsaksson,您是对的,但是在他们想要的上下文中,他们可能会在任何一方都不返回行的情况下失败。但是由于一个字段选择不能返回两列,我不得不在另一列前面输入。我想知道下一票的情况,我很高兴被证明是错误的,但我想知道的不仅仅是有人不同意。
SELECT
`id`,
`time`,
( select COUNT(*)
FROM table_2
WHERE `userid` = 100 ) as UserCount
FROM
table_1
WHERE
`time` > NOW()
ORDER BY
`id` DESC
LIMIT 1