我了解ORDER BY子句的工作原理以及FIELD()函数的工作原理。我想了解的是他们两个如何一起工作进行排序。如何检索行以及如何导出排序顺序
+----+---------+
| id | name |
+----+---------+
| 1 | stan |
| 2 | kyle |
| 3 | kenny |
| 4 | cartman |
+----+---------+
SELECT * FROM mytable WHERE id IN (3,2,1,4) ORDER BY FIELD(id,3,2,1,4)
Run Code Online (Sandbox Code Playgroud)
上面的查询将导致
+----+---------+
| id | name |
+----+---------+
| 3 | kenny |
| 2 | kyle |
| 1 | stan |
| 4 | cartman |
+----+---------+
Run Code Online (Sandbox Code Playgroud)
类似于说 ORDER BY 3, 2, 1, …
是否有 PostgreSQL 查询或命令返回查询、表或视图的字段名称和字段类型?
例如,如果应用于简单的 SELECT 查询的解决方案SELECT * from person应该返回如下列表:
Column Name | Column Type
===========================
First Name | character
Last Name | character
Age | integer
Date of Birth | date
Run Code Online (Sandbox Code Playgroud)
我查看了information_schema下面的答案中描述的视图,它似乎很好地涵盖了表格,我怀疑它也涵盖了视图,但我还没有检查过。
最后一个是任意但有效的 SELECT 查询,例如涉及数据库中的JOINS、 UNIONS等。是否有内置过程或其他存储过程或脚本可以为任何有效的 QUERY 返回相同的结果?
我正在开发一个程序来创建数据和查询表单,数据验证和对返回的数据执行函数需要这些信息。
我在这里感到有点尴尬,我一直将术语“列”和“字段”完全互换使用,这在最近的技术讨论中引起了一些混乱。
但是,有人告诉我,这是不正确的,它应该是(将每个术语翻译成电子表格术语,忽略数据类型和所有其他使数据库有用的东西):
这是正确的吗?我可以发誓,列和字段比这更可互换使用。我当然去过。
所以我们不向表中添加字段,而是向表中添加列,并且字段仅在谈论记录中的数据时才相关?
关于列与字段的其他想法?
编辑:澄清一下,当前上下文是 MS SQL Server。我在 SQL Server 之前的背景是 MS Access,这可能会影响我对这些术语的使用。
由于 GIS 软件的限制,我需要为数据库中的 200 多个表中的每一个编写选择查询。查询需要选择除 SHAPE 列之外的所有列。
是否有一种有效的方法来获取每个表的所有字段名称 - 用于编写选择查询?
我试过的:
我认为这可以通过 SQL Developer(免费)实现。但不幸的是,由于 IT 挑战,我没有 SQL Developer。
我知道当我SELECT *在 Oracle 中的表上创建视图时,查询被转换为显式选择单个字段。所以我可以 a)SELECT *为每个表创建一个视图,b) 获取视图定义,以及 c) 为每个表编写查询。这可能比手动输入每个字段名称要快,但不会快很多。
如何有效地为具有大量列的表编写选择查询?
tsrange 如何以二进制形式存储?
例如创建表
CREATE TABLE public.test (t tsrange);
INSERT INTO test VALUES ('[2010-01-01 14:30, 2010-01-01 15:30)');
INSERT INTO test VALUES ('[2011-01-01 14:31, 2015-11-01 15:30)');
INSERT INTO test VALUES ('[2017-01-01 14:31, 2018-11-01 15:30)');
COPY test TO '/tmp/pgcopy' WITH (FORMAT binary);
COPY test TO '/tmp/pgcopy.csv' WITH (FORMAT csv);
Run Code Online (Sandbox Code Playgroud)
它输出:
cat /tmp/pgcopy.csv
"[""2010-01-01 14:30:00"",""2010-01-01 15:30:00"")"
"[""2011-01-01 14:31:00"",""2015-11-01 15:30:00"")"
"[""2017-01-01 14:31:00"",""2018-11-01 15:30:00"")"
hexdump -C /tmp/pgcopy
00000000 50 47 43 4f 50 59 0a ff 0d 0a 00 00 00 00 00 00 |PGCOPY..........|
00000010 …Run Code Online (Sandbox Code Playgroud) fields ×5
postgresql ×2
catalogs ×1
copy ×1
datatypes ×1
date-format ×1
dump ×1
mysql ×1
oracle ×1
order-by ×1
select ×1
terminology ×1