我对hive和sql很新,我对如何进行以下操作有疑问:
我有表A:
Name id
Amy 1
Bob 4
Josh 9
Sam 6
我想使用另一个表(表B)中的值来过滤它:
Value id
.2 4
.7 6
要获得一个看起来像表A的新表,但只包含在id列中也出现在表B的id列中的值的行:
Name id
Bob 4
Sam 6
所以我假设我会写一些像......一样的东西。
CREATE TABLE Table C AS
SELECT * FROM Table A
WHERE id....
答案 0 :(得分:1)
加入吧..
hive> CREATE TABLE TableC AS
> SELECT A.* FROM TableA as A,
> TableB as B
> WHERE A.id = B.id;
hive> SELECT * FROM TableC;
OK
Bob 4
Sam 6
或试试这个,
hive> CREATE TABLE TableD AS
> SELECT A.* FROM TableA as A join
> TableB as B
> on A.id = B.id;
hive> SELECT * FROM TableD;
OK
Bob 4
Sam 6
答案 1 :(得分:0)
使用以下列创建了两个表
CREATE TABLE TABLE_1
( NAMES VARCHAR2(10) NOT NULL,
ID_1 NUMBER (2) NOT NULL)
CREATE TABLE TABLE_2
( VALUES_1 VARCHAR2(10) NOT NULL,
ID_1 NUMBER (2) NOT NULL)
并在这些表中插入值
决赛桌应该创建为
CREATE TABLE TABLE_3 AS (
SELECT T1.NAMES,T2.ID_1 FROM TABLE_1 T1,TABLE_2 T2
WHERE T1.ID_1(+)= T2.ID_1)
答案 2 :(得分:0)
我想要的结果的正确语法是:
CREATE TABLE tableC AS
SELECT tableA.*
FROM tableA LEFT SEMI JOIN tableB on (tableA.id = tableB.id);
答案 3 :(得分:0)
创建结果表
CREATE TABLE TABLE3 (Name STRING, id INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
然后使用Join
插入新表INSERT INTO TABLE TABLE3 SELECT t1.Name, t1.Id from Table1 t1
JOIN Table2 t2 WHERE t1.id = t2.id;
会给你想要的结果。