使用mysql/otp运行“select*fromtablename”查询,不带“where”

mbzjlibv  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(233)

这个驱动程序允许您在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      |
+----------+-----------+-------+----------+-----------+

所以我希望第一列存储在可变纬度内,第二列存储在经度内。。。。。

fkvaft9z

fkvaft9z1#

以图书馆为例:

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

您应该可以使用以下查询来执行此操作,查询函数调用中只有2个参数:

{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">>]
]

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

相关问题