【问题标题】:Mysql compare two tablesMysql比较两张表
【发布时间】:2011-10-08 23:55:06
【问题描述】:

我在同一个数据库中有两个具有匹配 ID 的表。

第一个表是accounts

id - account_access - name - email - city - state - etc...  
1 - 1 - Mark - mark@mark.com - Seattle - WA - blah,blah,blah  
2 - 1 - Dave - dave@dave.com - Portland - OR - blah,blah,blah  
3 - 0 - Jake - jake@jake.com - San Francisco - CA - blah,blah,blah  
4 - 1 - Julie - julie@julie.com - Los Andeles - CA - blah,blah,blah

第二张表是members

 id - status - score - IQ  
 1 - 4 - 9000 - 108  
 2 - 5 - 8000 - 90  
 3 - 5 - 1000 - 25 (Disclaimer: Any relation to real people is purely coincidental)  
 4 - 5 - 5000 - 60

由于杰克不是很聪明,他对帐户的访问权限为零。

我想知道有多少具有 account_access (1) 的人具有状态 (5),或者有多少具有状态 (5) 的人具有访问权限。
我不熟悉如何比较两个表的 SELECT 语句,我想知道行数,然后也检索要显示的数据。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    你要做的是左连接。

    SELECT count(*)
    FROM Accounts
    LEFT JOIN members
    ON Accounts.id = members.id
    WHERE status = 5
    AND account_access = 1
    

    关于左连接的其他信息:http://www.w3schools.com/sql/sql_join_left.asp

    【讨论】:

    • 如果要检索要显示的数据,请选择单独的元素 SELECT blah, blah2, count(*) as COUNT。
    • 左连接...我要查一下。和 count(*) 计数?我在想mysql_num_rows。
    • 是的,count会返回结果的数量:w3schools.com/sql/sql_func_count.asp
    • 没想到会这样,谢谢。什么是称为“accounts.id”的部分,它是一个表和列,令我惊讶的是,我还没有抓住它,是标准还是仅在这种情况下。
    • 这决定了连接两个表的列。这是相当标准的连接,但您也可以使用“使用”关键字。这是 MySQL 关于连接的官方页面,阅读起来很痛苦,但最终还是很值得的。 dev.mysql.com/doc/refman/5.0/en/join.html
    【解决方案2】:

    从使用 (id) 的帐户中选择 count(*),其中帐户访问权限 = 1 和状态 = 5;

    我的 bb 中没有下划线,因此您可能需要在运行查询之前将 account 和 access 之间的空格替换为下划线。

    【讨论】:

    • 我喜欢你如何使用“使用(id)”并没有立即注意到这一点,我将在我的代码测试中尝试这一点。谢谢下巴!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多