我之前没有使用SQLite过,也无法弄清楚语法,SQL Server如果它有帮助,我有这个工作.
我需要将结果放入临时表中,以便重用它们.
// SQL Server
WITH FT_CTE AS
(
SELECT pID, cID FROM brFTNode_Children
WHERE pID = 1
UNION ALL
SELECT e.pID, e.cID FROM brFTNode_Children e
INNER JOIN FT_CTE ftCTE on (ftCTE.cID = e.pID)
)
SELECT * INTO #ParentChild FROM FT_CTE;
Run Code Online (Sandbox Code Playgroud)
// SQLite试试
WITH FT_CTE AS
(
SELECT pID, cID FROM brFTNode_Children
WHERE pID = 1
UNION ALL
SELECT e.pID, e.cID FROM brFTNode_Children e
INNER JOIN FT_CTE ftCTE on (ftCTE.cID = e.pID)
)
CREATE TEMPORARY …Run Code Online (Sandbox Code Playgroud) 如何设置AUTO_INCREMENTon CREATE TABLE或ALTER TABLEfrom另一个表?
我发现了这个问题,但没有解决我的问题: 如何使用另一个表中的MAX值重置MySQL AutoIncrement?
我也试过这个:
CREATE TABLE IF NOT EXISTS `table_name` (
`id` mediumint(6) unsigned NOT NULL AUTO_INCREMENT,
`columnOne` tinyint(1) NOT NULL,
`columnTwo` int(12) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=(SELECT `AUTO_INCREMENT` FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA` = 'database_name' AND `TABLE_NAME` = 'another_table_name');
Run Code Online (Sandbox Code Playgroud)
这个:
ALTER TABLE `table_name` AUTO_INCREMENT=(SELECT `AUTO_INCREMENT` FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA` = 'database_name' AND `TABLE_NAME` = 'another_table_name');
Run Code Online (Sandbox Code Playgroud)
这个:
CREATE TABLE IF NOT EXISTS `table_name` (
`id` mediumint(6) unsigned …Run Code Online (Sandbox Code Playgroud) 我有两个带服务器端处理的jQuery数据表.我有一个复选框,我隐藏并显示两个表.我想销毁无显示的并创建另一个表.我该怎么做?
这是我尝试但ajax.reload不解雇的.
if ($('#mode').is(':checked')) {
Table2.ajax.reload();
Table1.clear();
Table1.destroy();
} else {
Table1.ajax.reload();
Table2.clear();
Table2.destroy()
}
var Table1 = $('#timesheet-table').DataTable({})
var Table2 = $('#timesheet-table-2').DataTable({})
Run Code Online (Sandbox Code Playgroud) 我正在构建一个包含系统条形码以及自定义条形码选项的数据库。我对custom_barcode和有一个独特的约束system_barcode。
我想做的是拥有它,因此如果custom_barcode值为 \xe2\x80\x9c123\xe2\x80\x9d,则其他行都不能具有值为 \xe2\x80\x9c123" 的custom_barcodeOR 。我没有尝试制作一个 2 列唯一约束,其中如果是“123”并且是“456”,则该组合不能再次存在。是否可以实现此目的?我想知道这是否需要通过触发器来实现。system_barcodecustom_barcodesystem_barcode
可能的重复:
SQL Server:检查表是否存在
Oracle:如果表存在
我正在尝试创建一个表并插入一些值,但在此之前我必须确保该表尚不存在。你如何检查这一点?
我正在开发一个相对庞大的应用程序,其中包含相当多的表。我必须编写一个 SQL 查询,它在简化后涉及 5 个表(有关连接,请参见 jpg)。
想法如下:人有地址,地址有类型(私人、专业等)和国家。人也可以有选择。这些选项(此处在带有 name_id 的选项表中说明)可以链接到地址类型。
这个想法是提取所有拥有一个或多个地址的人,这些地址由一个国家指定,并且他们也出现在 [option address] 表中。
例如,假设我们想要地址为 country_id=1 的人。结果集必须排除与其选项链接的地址类型不同的人员。
嗯...我不确定我是否了解自己 :)
但无论如何,这是创建所有内容的 SQL。
CREATE TABLE `address` (
`person_id` int(11) NOT NULL,
`type_id` int(11) NOT NULL,
`country_id` int(11) NOT NULL,
UNIQUE KEY `apt` (`person_id`,`type_id`),
KEY `apid` (`person_id`),
KEY `atid` (`type_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `address` (`person_id`, `type_id`, `country_id`) VALUES
(1, 1, 1),
(2, 2, 1),
(3, 1, 1),
(3, 2, 2),
(5, 1, 2),
(6, 2, 1),
(7, 1, 1),
(7, 2, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Oracle 的“按选择创建表”功能进行快速更新。我看到的问题是“空”字段没有被保留。
我定义了下表:
create table mytable(
accountname varchar2(40) not null,
username varchar2(40)
);
Run Code Online (Sandbox Code Playgroud)
当我执行原始 CTAS 时,帐户上的 NOT NULL 被保留:
create table ctamytable as select * from mytable;
describe ctamytable;
Name Null Type
----------- -------- ------------
ACCOUNTNAME NOT NULL VARCHAR2(40)
USERNAME VARCHAR2(40)
Run Code Online (Sandbox Code Playgroud)
但是,当我对帐户名进行替换时,不会保留 NOT NULL。
create table ctamytable as
select replace(accountname, 'foo', 'foo2') accountname,
username
from mytable;
describe ctamytable;
Name Null Type
----------- ---- -------------
ACCOUNTNAME VARCHAR2(160)
USERNAME VARCHAR2(40)
Run Code Online (Sandbox Code Playgroud)
请注意,该accountname字段不再有空值,并且该varchar2字段从 40 个字符变为 160 个字符。有没有人见过这个?
我正在尝试从配置单元查询创建一个制表符分隔值。
根据 Apache Hive wiki,我将查询编写为:
INSERT OVERWRITE LOCAL DIRECTORY '/home/luca/query_results/'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t' ESCAPED BY '"' LINES TERMINATED BY '\n'
STORED AS TEXTFILE
SELECT * FROM mytable ;
Run Code Online (Sandbox Code Playgroud)
(请注意,真正的查询非常复杂,我知道我可以hive -e "Select * from mytable > output在这个简单的情况下使用)。
该查询似乎有效,但在 query_results 目录中我找到一个带有.snappy扩展名的文件,当我打开它时,它似乎是一个二进制文件,而不是文本文件。
我的查询有什么问题?如何在格式良好的文本文件中获取查询结果(我想编写一个返回多个此类文件的配置单元脚本。如果我什至可以从配置单元中指定文件的名称,那就太好了)。
我想在 postgreSQL 数据库中存储一些元信息。这就需要存储列类型信息。我知道 regtype 类型,但它不存储有关长度或精度的信息。
我怎样才能做到这一点。我可以使用 TEXT 列,但随后我需要处理所有验证和引用完整性。有没有更方便的方法来实现这一目标?
下面我展示示例代码。
CREATE TABLE foo
(name TEXT,
sql_type regtype);
INSERT INTO foo
VALUES('my_field_1', 'character varying'::regtype);
INSERT INTO foo
VALUES('my_field_2', 'VARCHAR(50)'::regtype);
INSERT INTO foo
VALUES('my_field_3', 'NUMERIC(32,16)'::regtype);
SELECT * from foo;
Run Code Online (Sandbox Code Playgroud)
结果如下:
name sql_type
text regtype
-------------------------------------
my_field_1 character varying
my_field_2 character varying
my_field_3 numeric
Run Code Online (Sandbox Code Playgroud)
预期结果:
name sql_type
text regtype
-------------------------------------
my_field_1 character varying <-- I won't need such cases
my_field_2 character varying(50)
my_field_3 numeric(32,16)
Run Code Online (Sandbox Code Playgroud)
我目前使用的是 PostgreSQL 9.6
我在 MySQL 8 上尝试添加检查约束:
ALTER TABLE `table` ADD CHECK (
(`column_a` IS NULL AND `column_b` IS NOT NULL) OR
(`column_a` IS NOT NULL AND `column_b` IS NULL)
);
Run Code Online (Sandbox Code Playgroud)
但我不断收到此错误:
列“column_b”不能用于检查约束“table_chk_1”:需要在外键约束“table_ibfk_2”引用操作中使用。
我在互联网上的其他任何地方都找不到对此错误的任何参考,我不明白问题是什么。无论column_a和column_b也的外键与其它表,他们都是空。我只想确保中的每一行table都有一个引用 viacolumn_a或 via column_b。
这个错误的原因是什么?
我试图删除外键,添加检查约束并成功。然后,如果我将外键添加回,column_b我仍然会收到相同的错误。
create-table ×10
sql ×4
mysql ×2
oracle ×2
postgresql ×2
alter-table ×1
arrays ×1
csv ×1
datatables ×1
destroy ×1
hive ×1
insert ×1
join ×1
jquery ×1
mysql-8.0 ×1
save ×1
sqlite ×1
types ×1