MySQL - 从另一个表中为WHERE子句选择数据

问题描述 投票:1回答:1

我有以下MySQL查询(尝试失败):

SELECT * FROM 
(SELECT  @rownum:=@rownum+1 rank, id, userID, total 
 FROM table1 total, (SELECT @rownum:=0) r 
 WHERE id = 318467989655781389 && mydb.table2.colm = 'false' 
 ORDER BY total DESC) a 
LIMIT 10

但是,我得到一个错误,说mydb.table2.colm不在字段列表中。如何从另一个表中获取数据以用于WHERE子句?

mysql sql select
1个回答
2
投票

你会使用JOIN。查询看起来像这样:

SELECT (@rownum := @rownum + 1) as rank, t1.id, t1.userID, t1.total 
FROM table1 t1 JOIN
     mydb.table2 t2
     ON t1.? = t2.? CROSS JOIN
     (SELECT @rownum := 0) params
WHERE t1.id = 318467989655781389 AND t1.colm = 'false' 
ORDER BY t1.total DESC
LIMIT 10;

?用于将表连接在一起的列。

笔记:

  • 只要查询包含多个表,就使用表别名和限定列名。
  • 您只能引用FROM子句中特定的表。
  • LIMIT不需要子查询。在某些版本的MySQL中,ORDER BY可能需要子查询,但查询看起来会有所不同。
  • SQL中的boolean AND运算符是AND。虽然&&适用于MySQL,但您也可以使用标准运算符。
© www.soinside.com 2019 - 2024. All rights reserved.