【问题标题】:PHP/MYSQL - Return column name where variable matches datapoint [duplicate]PHP / MYSQL - 返回变量匹配数据点的列名[重复]
【发布时间】:2020-05-24 16:01:54
【问题描述】:

我有一个查询,在 Psuedo MYSQL 中说:

"SELECT * FROM table WHERE col1 = $x OR col2 = $x"

现在我正在遍历结果的每一行,但想为每一行确定 x 所在的列。因此,我希望能够返回 column_name,其中变量 $x == $x 在表中。

我曾尝试使用fetch_field(),但无济于事。

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    您可以使用case 表达式向结果集中再添加一列,指示搜索值来自哪一列

    SELECT 
        t.*,
        case when col1 = :x then 'col1' else 'col2' end which_col
    FROM table t
    WHERE :x IN (col1, col2)
    

    旁注:

    • 您确实想使用参数化查询来提高效率和安全性 - 更多关于 here

    • 你应该养成在select子句中枚举你想要的列的习惯,而不是盲目地使用select *——这使得查询更容易理解和维护,并且可以让你的代码更高效

    • 您可以使用 then INWHERE 子句中的条件缩短一点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多