1

我正在为我的网页使用 PHP 执行 MySQL 函数。

我有一张桌子

table name -> users

 uname     oname
  john      alex
  john      murray
  john      joseph
  john      ray

和另一张桌子

table name -> more_info

fname    lname         more
 alex     some name   some info
 murray     //           //
 joseph     //           //
 ray       //            //

我想做的是运行查询

检索与johnoname匹配的所有列值uname

如果 uname = john,则此语句成功检索到 oname 列值

SELECT oname FROM users WHERE uname = 'john '

现在我想要一个类似这样的语句,基于之前检索到的oname 列值

SELECT * FROM more_info WHERE fname=oname // previos ones 

我猜它JoininnerJoin但不知何故我无法获得它的正确语法或任何其他简单的查询来做到这一点。

我的方法

我想先检索oname列值,然后在for循环中,根据返回的行数为每一列运行一个查询,但这种方法会占用我的服务器。

4

4 回答 4

1

您可以通过一个简单的方法将两个查询合并为一个INNER JOIN

SELECT * FROM more_info mi
INNER JOIN users u ON mi.fname = u.oname
WHERE u.uname = 'john'

如果表中有可能出现空值more_info,那么您应该使用LEFT JOIN而不是INNER JOIN. 否则没有必要。

于 2013-07-04T07:23:53.680 回答
1

我认为以下查询会帮助你。

SELECT * FROM `more_info` WHERE `fname` = (SELECT `oname` FROM `users` WHERE `uname` = "john")
于 2013-07-04T07:27:49.463 回答
1

试试这个查询,

 SELECT * FROM `more_info` `i` INNER JOIN `users` `u` ON `i`.`fname`=`u`.`oname` WHERE `u`.`uname`="john"
于 2013-07-04T07:23:56.753 回答
0
SELECT * FROM users  A
INNER JOIN more_info B
    ON A.oname = B.fname
WHERE uname = 'john'

有关详细信息,请参阅有关 JOIN 语法的 MySQL 文档

于 2013-07-04T07:26:20.170 回答