【问题标题】:I want to display specific column using mysql我想使用 mysql 显示特定列
【发布时间】:2022-01-24 03:56:01
【问题描述】:

需要帮助。我正在尝试将以前的存储表与以前的比率表联系起来。这是我的代码。但它总是显示语法错误。 我的桌子: 以前的存储:

|IndexId|日期|from_section|to section|

以前的比例:

|IndexId|Date|BeforeFormerID1|BeforeFormerID2|AfterFormerID1|AfterFormerID2|

我的代码:

$sql = "SELECT * former storage.IndexID, Date, from_section, to_section, BeforeFormerID1, BeforeFormerID2, AfterFormerID1,AfterFormerID2 FROM @9876543 former ratioformer storage.IndexID = former ratio.IndexID";

【问题讨论】:

  • 表名中真的有空格吗? former ratio ?
  • 是的,有空间。我应该删除空间吗?
  • 如果可以的话,可以重命名两个表和to section 列,这样它们的名称中就没有空格。惯例通常是对表格和列名使用小写字母,所以from_section 的名字很好,表格可以是former_storage 等。大写字母和空格的使用让你的生活变得更加艰难;但我不知道其中有多少完全取决于你。
  • 已删除空间但仍无法运行
  • 如果您在数据库中的表/列名称已经包含空格,则在查询中删除(空格)只会告诉您该表不存在。您需要通过运行RENAME TABLE `former storage` TO former_storage; 重命名表。如果您有权这样做并且这不是生产表。如果这是一个生产表并且您更改了它的名称,那么使用它的所有进程都会崩溃,您需要更改所有查询以适应新的表名。

标签: php mysql


【解决方案1】:

查询基本上有3个问题:

  • (1) 星号 (*) 不应存在;
  • (2) 对于 Date 列,您应该指定它来自哪个表(因为它们都有该列)
  • (3) 2个表名和1个列名中的空格打断了查询;您要么必须转义表名和列名(在反引号之间),要么(最好)重命名它们。

在不更改表名和列名的情况下,正确的查询应该是:

       SELECT `former storage`.`IndexID`
            , `former storage`.`Date`
            , `from_section`, `to section`
            , `BeforeFormerID1`, `BeforeFormerID2`
            , `AfterFormerID1`,  `AfterFormerID2`
         FROM `former storage`
   INNER JOIN `former ratio`
           ON `former ratio`.`IndexID` = `former storage`.`IndexID`

但是如果你改进了一些列名,那么大部分反引号就不再需要了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    相关资源
    最近更新 更多