Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL语句-从两个表中提取_Mysql - Fatal编程技术网

MYSQL语句-从两个表中提取

MYSQL语句-从两个表中提取,mysql,Mysql,我的数据库中有两个表。每个字段中都有三个内容:一个标识符(它只是一个自动生成的数字)、一个文本字段和一个整数字段。文本字段中的数据(我们称之为Names)在两个表中完全相同。只有数字字段不同。我需要这些语句来比较两组数字字段,并列出两个表中数字不为零的每个名称。我还需要它将字段中的两个数字相加,并用合并的值创建一个单独的列,然后按值的顺序从最高值到最低值列出名称 这是我所能做到的,现在我陷入了困境,我对SQL非常陌生 SELECT tableone.names FROM tableone, ta

我的数据库中有两个表。每个字段中都有三个内容:一个标识符(它只是一个自动生成的数字)、一个文本字段和一个整数字段。文本字段中的数据(我们称之为
Names
)在两个表中完全相同。只有数字字段不同。我需要这些语句来比较两组数字字段,并列出两个表中数字不为零的每个名称。我还需要它将字段中的两个数字相加,并用合并的值创建一个单独的列,然后按值的顺序从最高值到最低值列出名称

这是我所能做到的,现在我陷入了困境,我对SQL非常陌生

SELECT tableone.names
FROM tableone, tabletwo
WHERE (tableone.numbers > 0) AND (tabletwo.numbers > 0)
更新,测试sql:

USE test;

CREATE TABLE IF NOT EXISTS tableone (
  names TINYTEXT NOT NULL,
  numbers INT NOT NULL,
  PRIMARY KEY (names(100))
);

CREATE TABLE IF NOT EXISTS tabletwo (
  names TINYTEXT NOT NULL,
  numbers INT NOT NULL,
  PRIMARY KEY (names(100))
);

INSERT INTO tableone SELECT 'a', RAND();
INSERT INTO tableone SELECT 'b', RAND();
INSERT INTO tableone SELECT 'c', RAND();
INSERT INTO tableone SELECT 'd', RAND();
INSERT INTO tabletwo SELECT names, RAND() FROM tableone;

SELECT
 tableone.names,
 tableone.numbers + tabletwo.numbers AS numbers_sum
FROM tableone
LEFT JOIN tabletwo USING (names)
WHERE (tableone.numbers > 0)
 AND (tabletwo.numbers > 0)
ORDER BY 2 DESC;
输出:

+-------+-------------+
| names | numbers_sum |
+-------+-------------+
| b     |           2 |
| d     |           2 |
+-------+-------------+
更新,测试sql:

USE test;

CREATE TABLE IF NOT EXISTS tableone (
  names TINYTEXT NOT NULL,
  numbers INT NOT NULL,
  PRIMARY KEY (names(100))
);

CREATE TABLE IF NOT EXISTS tabletwo (
  names TINYTEXT NOT NULL,
  numbers INT NOT NULL,
  PRIMARY KEY (names(100))
);

INSERT INTO tableone SELECT 'a', RAND();
INSERT INTO tableone SELECT 'b', RAND();
INSERT INTO tableone SELECT 'c', RAND();
INSERT INTO tableone SELECT 'd', RAND();
INSERT INTO tabletwo SELECT names, RAND() FROM tableone;

SELECT
 tableone.names,
 tableone.numbers + tabletwo.numbers AS numbers_sum
FROM tableone
LEFT JOIN tabletwo USING (names)
WHERE (tableone.numbers > 0)
 AND (tabletwo.numbers > 0)
ORDER BY 2 DESC;
输出:

+-------+-------------+
| names | numbers_sum |
+-------+-------------+
| b     |           2 |
| d     |           2 |
+-------+-------------+

当我尝试这样做时,它会说FROM子句中有语法错误?我测试了我编写的sql,它成功了,可以在您的服务器上给我一个拼错的表名吗?它会不断突出显示(名称)并说FROM子句中有错误。。但是表中的名称是正确的。。我一点也听不懂这张桌子叫什么名字?它是mysql关键字之一吗?当我尝试这样做时,它会说FROM子句中有语法错误?我测试了我编写的sql,它成功了,可以在您的服务器上给我一个拼错的表名吗?它会不断突出显示(名称)并说FROM子句中有错误。。但是表中的名称是正确的。。我一点也听不懂这张桌子叫什么名字?它是mysql关键字之一吗?