仅使用1条语句从2个条件表创建列表

时间:2019-04-17 16:46:31

标签: mysql

我已经创建了两个表A和B,如下所示:

 A                  B
Name              Name
Burger          Avocado
Beef              Crab
Potato.           Pizza

我想创建一个列表,仅使用1条语句返回长度为5的2个表中的名称。

我的代码:

    SELECT A.Name,B.Name
    INTO LIST
    FROM A,B
    WHERE LENGTH(A.Name)>5 AND LENGTH(B.Name)>5;

错误:未声明变量LIST。

我的问题是我如何声明LIST,但仍然只使用1条语句。

谢谢

2 个答案:

答案 0 :(得分:1)

MySQL不支持SELECT INTO。如果已经创建了表LIST,我认为您需要的是:

INSERT INTO LIST
SELECT Name FROM A WHERE LENGTH(Name) > 5
UNION
SELECT Name FROM B WHERE LENGTH(Name) > 5;

如果表LIST还不存在,则可以执行以下操作:

CREATE TABLE LIST
AS
SELECT Name FROM A WHERE LENGTH(Name) > 5
UNION
SELECT Name FROM B WHERE LENGTH(Name) > 5;

答案 1 :(得分:1)

您可以尝试运行此查询:

CREATE TEMPORARY TABLE LIST
SELECT Name FROM A WHERE LENGTH(Name) > 5
UNION
SELECT Name FROM B WHERE LENGTH(Name) > 5
;

此查询将从收到的查询结果中创建临时表LIST

如果您已经有表LIST,并且需要在表中插入数据-请运行下一个查询:

INSERT INTO LIST
SELECT Name FROM A WHERE LENGTH(Name) > 5
UNION
SELECT Name FROM B WHERE LENGTH(Name) > 5
;

顺便说一句

  

返回2个长度> 5的表的名称

为此,您必须使用UNION,否则结果将如下所示:

SELECT A.Name, B.Name
FROM A,B
WHERE LENGTH(A.Name)>5 AND LENGTH(B.Name)>5;
+--------+---------+
| Name   | Name    |
+--------+---------+
| Burger | Avocado |
| Potato | Avocado |
+--------+---------+

但是您似乎需要以下内容:

select * from LIST;
+---------+
| Name    |
+---------+
| Burger  |
| Potato  |
| Avocado |
+---------+