MySql中有没有一种方法可以创建用于联接的内联表?
就像是:
SELECT LONG [1,2,3] as ID, VARCHAR(1) ['a','b','c'] as CONTENT
那会输出
| ID | CONTENT |
| LONG | VARCHAR(1)|
+------+-----------+
| 1 | 'a' |
| 2 | 'b' |
| 3 | 'c' |
我可以在这样的联接中使用:
SELECT
MyTable.*,
MyInlineTable.CONTENT
FROM
MyTable
JOIN
(SELECT LONG [1,2,3] as ID, VARCHAR(1) ['a','b','c'] as CONTENT MyInlineTable)
ON MyTable.ID = MyInlineTable.ID
我意识到我可以做到
SELECT 1,'a' UNION SELECT 2,'b' UNION SELECT 3,'c'
但这似乎很邪恶
我不想执行存储过程,因为在每次查询和数据大小上,a,b,c都可能发生变化。另外,存储过程也需要保存在数据库中,我不想只为此修改数据库。视图是一回事。
我真正想要的是SELECT 1,'a' UNION SELECT 2,'b' UNION SELECT 3,'c'
使用更好的语法的东西。
我真正在寻找的是使用更好的语法执行SELECT 1,’a’UNION SELECT 2,’b’UNION SELECT 3,’c’的操作。
是的,可以使用MySQL 8.0.19中引入的 ROW
CONSTRUCTOR
:
VALUES ROW (1,'a'), ROW(2,'b'), ROW(3,'c')
并使用JOIN:
SELECT *
FROM tab
JOIN (VALUES ROW (1,'a'), ROW(2,'b'), ROW(3,'c') ) sub(id, content)
ON tab.id = sub.id;
db <>
fiddle演示
问题内容: 我不知道是什么问题。使用MySQL 5.0尝试运行以下MYSQL更新语句时出现编译错误 所有字段名称都是正确的。有什么想法吗? 问题答案: 尝试这个: 更新: 既然您说查询产生了语法错误,所以我创建了一些可以对其进行测试的表,并确认查询中没有语法错误: 看到?没有语法错误。我针对MySQL 5.5.8进行了测试。
问题内容: 我正在尝试返回记录编号的历史位置 我所拥有的是: 解析大约需要1分钟,并返回如下数据: 我真正希望看到的是像这样的查询中的数据: 哪个返回 第二个查询更好,但我真的只想显示每个记录ID和位置的最后修改时间。 有人可以看到我在做什么吗?感谢您的帮助。 问题答案: 像这样 其核心是…
问题内容: 根据SQLAlchemy,在for循环中,将select语句视为可迭代。结果是将返回大量行的select语句不会使用过多的内存。 我在MySQL表上发现以下语句: 似乎不遵循此要求,因为我溢出了可用内存并在产生第一行之前开始崩溃。我究竟做错了什么? 问题答案: 基本游标立即从服务器获取整个查询结果。这会消耗大量内存和时间。当您要进行大型查询并一次从服务器提取结果时,请使用MySQLdb
问题内容: 这个问题已经在这里有了答案 : INNER JOIN ON vs WHERE子句 (12个答案) 7年前关闭。 我有两个选择连接SQL语句: 显然,它们的结果相同。但是它们之间没有任何区别,例如性能,可移植性。 问题答案: 一个区别是,第一个选项通过在where子句中表达联接条件来隐藏意图。 第二个选项,写出连接条件的条件对于阅读查询的用户来说更加清楚。它显示了查询的确切意图。 至于性
我得到了下面的SQL,我想将其转换为有效的HQL。这方面的问题是,不允许根据文档加入子查询。尽管这些是旧文档(v3.3),但在hibernate 5.3中,这一节似乎仍然适用。 我想出了这个HQL: 尝试执行此HQL查询会导致此异常 这将提示 在. 有没有办法加入HQL中的子查询?如果不是,那么获得与具有HQL的SQL相同的结果的最佳方法是什么? 我不擅长转换
我有以下SQL语句,它从数据库中选择公司(存储lat/lng),并显示离客户位置最近的5个位置。这是完美的工作: $query=sprintf(“选择公司名称、地址、电话、传真、联系人、电子邮件、网站、url、纬度、经度,(1.609344*3959*acos(弧度(“$center\u lat”)*cos(弧度(纬度))*cos(弧度(经度)-弧度(“$center\u lng”))sin(弧度