簡體   English   中英

MySQL雙重查詢請求

[英]Mysql double query request

我有一張桌子:

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

要么

id   time                count
1    2012-03-05 12:53:00 0

如果table_2中沒有任何記錄,謝謝!

將兩個非常簡單,不相關的查詢合並為一個更復雜的查詢並不是獲得性能的最佳方法。 往返次數減少可能會稍微增加一點,但是查詢很快將變得難以維護。

相反,為了避免額外的往返時間,請使用mysqli :: multi_query之類的東西將它們同時發送到數據庫。 這意味着您可以使查詢保持簡單,並且仍然只能往返數據庫一次。

由於它們毫無關系,既簡單又蠻力,所以我會這樣做。 不切實際,但是會做到的。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM