【问题标题】:mysql INNER JOIN displaying incorrect informationmysql INNER JOIN 显示不正确的信息
【发布时间】:2015-01-28 18:12:01
【问题描述】:

我在尝试对 2 个表执行内部联接时遇到问题 这是表格

addressBookUsers[
userid int PK Auto increment
username VARCHAR
password VARCHAR
]

addressbook[
aid int PK Auto Increment 
address VAR CHAR
uId int FK REFRENCE(userid) FROM addressBookUsers
]

这是一些示例数据

addressBookUsers
userid   username  password  
1        fred      21434234 
2        al        3243254 
3        web       fdsafdr


addressbook
aid   address  uId
1     2314     1
2     ererw    1
3     edfwrf   2
4     dfadf    2

这是我正在运行的查询。当我运行它时,所有数据都会打印到表中,而不仅仅是特定用户的数据

$result = mysql_query("SELECT * FROM addressbook INNER JOIN addressBookUsers ON addressbook.uId = addressBookUsers.userid ");

【问题讨论】:

    标签: mysql sql phpmyadmin inner-join


    【解决方案1】:

    您需要指定UserID

    $result = mysql_query("SELECT * FROM addressbook INNER JOIN addressBookUsers ON addressbook.uId = addressBookUsers.userid  and addressbook.uId=". $UserID. ";)
    

    $result = mysql_query("SELECT * FROM addressbook INNER JOIN addressBookUsers ON addressbook.uId = addressBookUsers.userid  where addressbook.uId=". $UserID. ";)
    

    编辑:

    因为内连接只提供您指定的 ON 列集。所以它会给所有匹配 行属于addressBookUsers.userid for addressbook.uid 所以你需要通过 where 子句或使用 join 过滤

    【讨论】:

    • 为什么我需要指定它?它不应该仅从 addressbook.uId 和 addressBookUsers.userid 自动获取值吗?谢谢
    • @onebadbaggins 欢迎您,这很有帮助,然后将其标记为左侧勾号上的答案
    猜你喜欢
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多