我试图在HiveQL中获得一个查询结果,其中一个列是不同的。然而,结果并不匹配。表中几乎有20列。
create table uniq_us row format delimited fields terminated by ',' lines terminated by '\n' as select distinct(a),b,c,d,e,f,g,h,i,j from ctry_us_join;
结果行数:513238
select count(distinct a) from ctry_us_join;
结果行数: 151616
这怎么可能,在我的第一次或第
我不理解这些文档,我担心如果我做错了这件事,我会不小心把我的表掉到数据库中,并破坏原始文件。
用于添加具有值的列。下面的代码是通过创建者git集线器示例提供的
-- add a FullNames column to Employees
ALTER TABLE "Employees" RENAME TO 'Employees_ME_TMP';
CREATE TABLE "Employees"
(
"EmployeeID" int NOT NULL,
"LastName" varchar
我在我的数据库中有一个表A,我想通过从另一个表B中添加新列来修改它。我遇到的问题是,如果我创建一个新的表或者没有表,那么左边的join就能很好地工作。例如,以下查询工作:
select * from TABLE_A left join TABLE_B on TABLE_A.ID=TABLE_B.ID
但是,当我使用alter时,会收到一条错误消息。下面的行生成一个错误消息1064 (SQL语法错误):
alter TABLE_A as select * from TABLE_A left join TABLE_B on TABLE_A.ID=TABLE_B.ID
或
alter TABLE_A
我一直在做一个项目,在使用SELECT INTO时遇到了一些有趣的行为。如果我有一个表,其列定义为int identity(1,1) not null,并使用SELECT INTO复制它,除非涉及联接,否则新表将保留IDENTITY属性。如果有联接,那么新表上的同一列就被简单地定义为int not null。
下面是一个脚本,您可以运行它来重现该行为:
CREATE TABLE People (Id INT IDENTITY(1,1) not null, Name VARCHAR(10))
CREATE TABLE ReverseNames (Name varchar(10), Reverse
我想在现有的菲尼克斯表上创建一个视图,并增加一个列。以下create语句正在抛出错误:
CREATE VIEW SCHEMA01.OSLE_VW (EVENTTIMESTAMP TIMESTAMP) AS SELECT *, CAST(TO_NUMBER("EVENTTIME") AS TIMESTAMP) EVENTTIMESTAMP FROM SCHEMA01.OSLE;
CREATE VIEW SCHEMA01.OSLE_VW AS SELECT *, CAST(TO_NUMBER("EVENTTIME") AS TIMESTAMP) EVENTTIM
当我在表中插入一些记录时,我发现..。
INSERT INTO T_CANDYBAR_DATA
SELECT CONSUMER_ID,CANDYBAR_NAME,SURVEY_YEAR,GENDER,1 AS STAT_TYPE,OVERALL_RATING
FROM CANDYBAR_CONSUMPTION_DATA
UNION
SELECT CONSUMER_ID,CANDYBAR_NAME,SURVEY_YEAR,GENDER,2 AS STAT_TYPE,NUMBER_BARS_CONSUMED
FROM CANDYBAR_CONSUMPTION_DATA
我有一个包含3列的表,分别是number(自动递增)、name(varchar)、id(int)。问题是,当我执行INSERT IGNORE INTO table1 (name, id) SELECT name, id FROM table2 WHERE id = someid并被忽略时,增量仍然会上升。当条目被忽略(当然是重复的)时,有没有办法防止增量。
您可以从SQL Server2008中的T-SQL函数返回单个表。
我想知道是否可以返回多个表。
这个场景是这样的:我有三个查询来过滤三个不同的表。根据我希望从函数返回的5个过滤表对每个表进行过滤;而不是在每个查询中复制和粘贴它们的创建。
这是一个使用复制和粘贴的简化示例:
FUNCTION GetValuesA(@SomeParameter int) RETURNS @ids TABLE (ID int) AS
WITH Filter1 As ( Select id FROM FilterTable1 WHERE Attribute=SomeParameter )
, Fi
我在oracle数据库中有表,而这些表中有不同数量的列。在这些表中,有一些真实的数据(100万到10亿行),我想为每个表创建一个唯一的索引,但我不知道哪一列或哪些列包含uniqe数据。
我们的目标是为一个表找到最小的列数,用它我可以创建一个唯一的索引。
我的想法是为每一列创建一个select语句,并检查它有多少不同的值:
select COLUMN_1, count(1) CC from TABLE group by COLUMN_1;
通过这种方式,我知道表中的记录数,并将其除以这个查询结果,得到一个表示列的唯一性的数字。对所有列执行此操作后,我将按照列的唯一性顺序列出列,直到每一行变得唯一
抱歉,标题不好,我想不出比这更好的了。请随意编辑。
我必须使用一个使用一个列存储不同类型信息的db表(姓氏(如果是person ),公司名称(如果是公司)。一场噩梦,我知道,但事实就是这样。
为了区分含义,还有一个带有整数的列,它指定name列中的类型。
该表的架构如下(简化):
ID int
dtype int
name varchar(50)
所以,一个样本可以是这样的:
ID dtype name
---------------------------
1 0 Smith
2 0 Trump
3
我在mysql中有表测试,如下所示:
id name address
1 Km sky
2 hd heaven
3 Ab null
4 en null
现在我做了一个sqoop导入,如下所示
sqoop import--connect jdbc:mysql://XXXXXX/testing --username XXXX --password XXXX --query "select * from testing.test where \$CONDITIONS" --null-string '' --null-non-string '
我有一个简单的SQLite表,叫做"message":
sequence INTEGER PRIMARY KEY
type TEXT
content TEXT
我想要获取每种类型的最后一条消息的内容(由其序列决定)。令我惊讶的是,下面这个简单的查询可以工作:
SELECT MAX(sequence), type, content
FROM message
GROUP BY type
令人惊讶的是,因为我知道MSSQL或Postgres会拒绝在选择列表中包含不属于GROUP BY子句或聚合函数的列,因此我必须执行连接,如下所示:
SELECT m.sequence, m.type
我在我们的数据库中有一个非常中央的表,它被一系列的应用程序使用,它有附加的规则、触发器和所有可以想象的依赖项。现在,我想在不引起依赖项问题的情况下修改表。我以前曾成功地完成了以下工作,但在一个不那么复杂的情况下:
alter table reconciliations rename to matches;
create view reconciliations as select * from matches;
这样做的目的是,我现在可以修改新的“匹配”表,例如添加一个或多个列,这些列不需要在“调节”视图中显示(通过添加where子句过滤掉它们)。
我在Postgres 9.5上,所以视图是自
我想了解在启用ONLY_FULL_GROUP_BY时查询是如何工作的。
如果我列出表的所有列,其中一列上有MIN(),那么它可以正常工作:
$query = "SELECT id, member_id, name, code, MIN(price) AS price, FROM tbl_product GROUP BY code";
但是,如果我选择了所有内容,就会有一个错误:
$query = "SELECT *, MIN(price) AS price FROM tbl_product GROUP BY code";
你能解释一下两者的区别吗?
我有两个表Cars2016和Cars2015,它们的列完全相同。
我想简单地连接这两个表来创建这样的查询:
SELECT Mark, COUNT(Models) FROM (Cars2015 UNION Cars2016) GROUP BY Mark
这个查询的目的是要知道每一个标记有多少模型,累计年2015年和2016年。
怎样才能有效地实现呢?
谢谢!
假设我有两个或更多的表填充了用户,并且我希望在同一查询中检索这些表中的所有用户。
表共享一些列,而那些具有相同名称的列正是我要检索的列。
类似于:
SELECT name, age FROM users1;
SELECT name, age FROM users2;
etc.
注意:这只是一个例子,并不是真正的问题。我不能将这些表合并为一个表。
declare
vquery long;
cursor c1 is
select * from temp_name;
begin
for i in c1
loop
vquery :='INSERT INTO ot.temp_new(id)
select '''||i.id||''' from ot.customers';
dbms_output.put_line(i.id);
end loop;
end;
/
select * from temp_name的输出是:
ID
我正在改进一个当前使用静态表的报告,该报告使用查找函数来填充来自几个不同数据集的数据。我们非常确定这会导致报告运行的时间更长,所以我尝试使用一个使用列组的表,以在单个数据集上实现相同的效果。
下面是我的查询当前的样子。只要有数据,它就完全按照我想要的那样工作。
Select CatName, CatCount, Category = 'Category 1', Sorting = 1
FROM
(Select CatName, Count(CatName) as CatCount FROM DataSet WHERE Parameters)
UNION
Select Cat
这只是一个好奇的问题,但我正在查看一个数据库,并从一个表中提取数据,该表对其中一列进行了查询。该列有四个可能的值null、0、1和2。当我以如下方式运行查询时:
SELECT * FROM STATUS WHERE STATE != '1' AND STATE != '2';
我得到了与运行时相同的结果:
SELECT * FROM STATUS WHERE STATE = '0';
例如,在被查询列的top命令中包含空值的行似乎在结果中被省略了,这种情况在SQL中总是会发生吗?
我通过Oracle SQL Developer运行我的命令。
可能重复:
如果您生成一个查询以将数据插入表"MyTab“中的列--年龄、性别、道布、ID
INSERT INTO MyTab
VALUES (22, '', '', 4)
“性”栏目的价值是什么&道布?是空的吗?
如果值为空,那么--
SELECT * FROM MyTab
WHERE Sex=NULL
上面的查询提供输出-没有选择行-为什么??
如果值不为空,那么--
SELECT * FROM Mytab
WHERE Sex IS NULL
上面的查询给出了输出
我希望MySQL数据库表与相应的elasticsearch索引保持同步。我在写我自己的工作。MySQL表具有InnoDB引擎。我添加了updated_at列,即CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。我使用这个查询来执行同步:
SELECT * FROM table WHERE updated_at>=bookmark;
我对它进行了测试,发现有一些插入物丢失了。
提交前是否计算了CURRENT_TMESTAMP?
在MySQL中,
IF NOT EXISTS (SELECT mtrNo from tblMeter where mtrNo = '0000033')
BEGIN
insert into tblMeter (mtrNo) values ('0000033')
END
ELSE
BEGIN
update tblMeter set Name = 'A-15' where mtrNo = '0000033'
END
就是工作。
但是在SQLite中,需要两条SQL语句。
这就是我想要做的。
我需要一个proc,它将接受一个IN param,它是一个表名,并输出一个只有3列的ref游标。
我想要的列是以_NAME_EN、NAME_FR和_ID结尾的列。
我尝试过这样的方法,但有时措辞与表名不匹配。
procedure getcodetable(p_table in varchar2, p_refcursor out cur) is
query_str varchar2(1000);
substr_table varchar2(200);
sometable varchar2(200);
begin
我有一个多列的表。我需要从整个表中获取min和max值,但也需要显示该min和max值在哪个类别中。我需要的列名是Asset_Type和Asset_Value。有多种(5+)资产类型,但我只需要显示最小值和最大值的资产类型。
SELECT Asset_Type, MAX(Asset_Value), MIN(Asset_Value)
FROM Asset
GROUP BY Asset_Type
这就是我所拥有的,但是对于每种资产类型,这都是min和max,而不仅仅是表的min和max。
我有三个表在一个UNION中连接在一起。联合中的每个表都有一个名为timestamp的列。我需要将所有时间戳合并在一起,这样它们就会显示为一列。
到目前为止,这是我的疑问;
SELECT ID, T.T_ID, T.name, T.pic, T.timestamp,
(SELECT COUNT(*) FROM track_plays WHERE T_ID = T.T_ID) AS plays,
(SELECT COUNT(*) FROM track_downloads WHERE T.T_ID) AS downloads,
NULL S_ID, NULL status, NULL times
我继承了一个SQL Server 2012数据库,该数据库使用触发器将对dbo表所做的所有更改复制到审计模式中,提供了类似于系统版本的时态表的功能。
其中一个触发器最近一直导致死锁:
ALTER TRIGGER [dbo].[ClientBusinessUnitBehaviour_Trigger_Update]
ON [dbo].[ClientBusinessUnitBehaviour]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO adt.[ClientBusinessUnitBeh