我正在使用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 // //
我要做的是运行查询
检索与oname
john
uname
列值
如果uname = john
,则此语句成功检索oname列值SELECT oname FROM users WHERE uname = 'john '
现在,基于之前检索的oname列值
,我想要一个这样的语句SELECT * FROM more_info WHERE fname=oname // previos ones
我猜它是Join
或innerJoin
,但不知怎的,我无法获得它的正确语法或任何其他简单查询来执行此操作。
我的方法
我想首先检索oname列值,然后在for循环中检索,根据返回的行数运行每个列的查询,但这种方法会占用我的服务器。
答案 0 :(得分: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
。否则没有必要。
答案 1 :(得分:1)
尝试此查询,
SELECT * FROM `more_info` `i` INNER JOIN `users` `u` ON `i`.`fname`=`u`.`oname` WHERE `u`.`uname`="john"
答案 2 :(得分:1)
我认为以下查询将对您有帮助。
SELECT * FROM `more_info` WHERE `fname` = (SELECT `oname` FROM `users` WHERE `uname` = "john")
答案 3 :(得分:0)
SELECT * FROM users A
INNER JOIN more_info B
ON A.oname = B.fname
WHERE uname = 'john'
有关详细信息,请参阅the MySQL documentation on the JOIN syntax。