【问题标题】:Data from two tables with same column names来自具有相同列名的两个表的数据
【发布时间】:2012-04-27 11:23:48
【问题描述】:

我有一张供用户使用的桌子。但是,当用户对其个人资料进行任何更改时,我会将它们存储在临时表中,直到我批准它们为止。然后将数据复制到实时表并从临时表中删除。

我想要实现的是,当在管理面板中查看数据时,或者在用户可以在提交前仔细检查的页面中,我想编写一个查询,允许我从两个表中获取数据两者中的 id 都等于 $userid。然后我想给他们展示一个表格,旧值出现在左列,新值出现在右列。

我找到了一些 sql 解决方案,但我不确定如何在 php 中使用它们来回显结果,因为两者中的列具有相同的名称。

【问题讨论】:

    标签: php mysql sql join


    【解决方案1】:

    这是您需要的查询。 假设您在两个表中有例如名称字段。表一登录和表二信息。现在

    SELECT login.name as LoginName , information.name InofName 
    FROM login left join information on information.user_id = login.id
    

    现在您可以在任何需要的地方使用LoginNameInofName

    【讨论】:

    • 如何自动为多个列名设置别名?例如,如果我想从两个表中选择 *?
    • 这不会成功,否则你的表列名应该不同然后就可以了,但好的做法是只选择那些需要的列
    【解决方案2】:

    如果您使用 AS SQL 关键字,您可以仅为该查询的结果重命名列。

    SELECT
        `member.uid`,
        `member.column` AS `oldvalue`,
        `edit.column` AS `newvalue`
    FROM member, edit
    WHERE
        `member.uid` = $userId AND
        `edit.uid` = $userId;
    

    类似的东西应该适合你。虽然 SQL 不是我的强项,但我很确定这个查询不会按原样工作,即使在具有正确字段和值的表上也是如此。

    【讨论】:

      【解决方案3】:

      使用 MySQL JOIN。并且您可以在一个 mysql 查询中从 2 个表中获取所有数据。

      SELECT * FROM `table1`
      JOIN `table2` ON `table1`.`userid` = `table2`.`userid`
      WHERE `table1`.`userid` = 1
      

      【讨论】:

        【解决方案4】:

        AS 添加到列名将允许您将其别名为不同的名称。

        SELECT table1.name AS name1, table2.name AS name2, ...
          FROM table1
          INNER JOIN table2
            ON ...
        

        【讨论】:

        • 如何自动为多个列名设置别名?例如,如果我想从两个表中选择 *?
        • 你不能。您必须为每个名称自己命名。
        • 那很痛苦:(。好吧让我试试。
        猜你喜欢
        • 1970-01-01
        • 2021-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多