【问题标题】:Running a "Select * From tableName" query using MySQL/OTP, with no 'WHERE'使用 MySQL/OTP 运行“Select * From tableName”查询,没有“WHERE”
【发布时间】:2019-05-14 07:17:28
【问题描述】:

This Driver 允许您在 Erlang 程序中调用 mysql 数据库。

它们提供了“多查询多结果集”的示例

{ok, [{[<<"foo">>], [[42]]}, {[<<"bar">>], [[<<"baz">>]]}]} =
    mysql:query(Pid, "SELECT 42 AS foo; SELECT 'baz' AS bar;"),

但不要真正解释它,或者展示如何在没有AS 的情况下使用它


我想执行类似的查询

{ok, [{[<<Latitude>>, [Longitude], [Image], [Username], [Bio]} = mysql:query(Db, "SELECT * FROM users",[])

这是我的常规select * from users

mysql> 从用户中选择 *;

+----------+-----------+-------+----------+-----------+
| latitude | longitude | image | username | bio       |
+----------+-----------+-------+----------+-----------+
| 44       | 44        |    45 | Sally    | Hello     |
| 42       | 43        |     0 | Bryce    | I'm me    |
| 20       | 24        |     0 | Richard  | I'm Great |
| 44       | 45        |     0 | Liz      | Yeah      |
+----------+-----------+-------+----------+-----------+

所以我希望第一列存储在变量 Latitude 中,第二列存储在 Longitude .....

【问题讨论】:

    标签: mysql erlang erlang-otp


    【解决方案1】:

    来自图书馆的例子:

    %% Select
    {ok, ColumnNames, Rows} =
        mysql:query(Pid, <<"SELECT * FROM mytable WHERE id = ?">>, [1]),
    

    您应该可以使用以下查询来做到这一点,只需 2 params on the query function call

    {ok, [<<"latitude">>, <<"longitude">>, <<"image">>, <<"username">>, <<"bio">>], Rows} 
        = mysql:query(Pid, <<"SELECT * FROM users">>),
    

    Rows 是这样的(根据您发布的表格):

    [ 
        [44, 44, 45,<<"Sally">>, <<"Hello">>],
        [42, 43, 0,<<"Bryce">>, <<"I'm me">>],
        [20, 24, 0,<<"Richard">>, <<"Hello">>],
        [44, 45, 0,<<"Liz">>, <<"Yeah">>]
    ]
    

    上述结构中的每个列表项都是数据库表中的一行,字段值的顺序与您的选择请求的顺序相同(您可以从ColumnNames 列表中看到它)。您可以使用此列表将其转换为您可能需要的任何其他结构。

    【讨论】:

      猜你喜欢
      • 2014-01-27
      • 2016-09-18
      • 2023-01-11
      • 2013-10-16
      • 1970-01-01
      • 2015-04-14
      • 2011-06-13
      • 2017-03-15
      • 2018-06-16
      相关资源
      最近更新 更多