2013-05-31 29 views
1

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

这是据我已经得到了,现在我卡住了,我是很新的SQL

SELECT tableone.names 
FROM tableone, tabletwo 
WHERE (tableone.numbers > 0) AND (tabletwo.numbers > 0) 

回答

1
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 

更新,测试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 | 
+-------+-------------+ 
+0

当我尝试,它说我在FROM子句中有语法错误? – jdreamer30

+0

我测试了我写的sql,它工作正常,可以在我的服务器上使用拼写错误的表名吗? –

+0

它不断突出显示(名称),并说在from子句中有一个错误..但名称在表格中是正确的..我完全不理解它 – jdreamer30