mysql - 使用 MySQL/OTP 运行“Select * From tableName”查询,没有“WHERE”
问题描述
该驱动程序允许您在 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 |
+----------+-----------+-------+----------+-----------+
所以我希望第一列存储在变量纬度中,第二列存储在经度......
解决方案
从图书馆的例子:
%% 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">>]
]
上述结构中的每个列表项都是数据库表中的一行,字段值的顺序与您的选择请求的顺序相同(如您从ColumnNames
列表中看到的那样)。您可以使用此列表将其转换为您可能需要的任何其他结构。
推荐阅读
- gerrit - gerrit:无法访问设置页面
- node.js - 即使您输入有效命令,仍会弹出未知命令消息
- javascript - 使用 const 值作为联合类型选项
- c++ - QTabBar设置为东或西时如何设置图标?
- javascript - Node.js - 读取流返回 ENOENT(errornr #4058)
- react-bootstrap-typeahead - onChange 事件清除输入
- ruby-on-rails - 从 rails 5.1.7 中的资产管道迁移后,无法使用 webpacker 让 javascript 工作
- java - H2:多行插入语句出错
- java - 包含方法没有给出正确的输出
- c# - 针对不同环境和不同版本运行测试 C#-MSTest