【问题标题】:MySql get rows where one column equals to another colum in another table where one column is equalMySql获取一列等于另一列的另一表中一列相等的行
【发布时间】:2017-08-10 04:13:08
【问题描述】:

我有两张桌子:

tbl_post 和 tbl_public

tbl_post:

id | post_id   |  author  |  date (unix time)
--------------------------------
 0 |  123456   | User 1   |  1489857236
 1 |  123457   | User 2   |  1489857237
 2 |  123458   | User 3   |  1489857238

tbl_public:

    id | post_id | public | date (unix time)
    -----------------------------------------
 --> 0 |  123456 |  0     |  1489857236
     1 |  123457 |  1     |
     2 |  123458 |  0     |
 --> 3 |  123456 |  1     |  1489857239

我想获取所有行,其中 user = "User 1" 并且表 tbl_public 中最新(按日期排序)公共列大于 0 按日期排序的 DESC

你能帮我查询命令吗? :)

【问题讨论】:

  • tbl_post 和 tbl_public 有什么关系??
  • 提示:INNER JOIN.

标签: php mysql sql database


【解决方案1】:

请简要说明您的需求,尽管我尝试了从您的问题中理解的内容。让我知道它是否对你有用。

SQL:

SELECT
    tp.post_id,
    tp.author,
    tpb.public,
    tpb.date
FROM
    tbl_post tp
    LEFT JOIN tbl_public tpb ON (tp.post_id = tpb.post_id)
WHERE
    tp.author = 'User 1'
ORDER BY
    tpb.date DESC;

【讨论】:

    【解决方案2】:

    您可以使用INNER JOIN 来执行此操作,语法如下:

    SELECT column_name(s)
    FROM table1
    INNER JOIN table2
    ON table1.column_name = table2.column_name;
    

    【讨论】:

      【解决方案3】:
      SELECT
        *
      FROM
        tbl_post 'a'
        INNER JOIN tbl_public 'b' ON a.post_id = b.post_id
      WHERE
        author = 'User 1'
        AND public > 0
      

      【讨论】:

      • 我需要从最新的 tbl_public 行获取公共列(按日期顺序排列)
      • 请在您的答案中添加一些解释,以便其他人可以从中学习
      • A code-only answer is not high quality。虽然此代码可能很有用,但您可以通过说明其工作原理、工作方式、何时应该使用以及它的局限性来改进它。请edit您的回答包括解释和相关文档的链接。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 2015-07-31
      • 1970-01-01
      • 2010-10-16
      相关资源
      最近更新 更多