以前从未做过SQL(我怎么可能不知道),
我有两张桌子,如下:
Table1:
Column Names: A B C
Rows: 1 sdf sdsd
2 seg werr
和
Table2:
Column Names: A B C D E F
Rows: 1 sdf sdsd yuj uui ddd
1 sdf sdsd sss sdd ssw
1 sdf sdsd jut scv sef
2 seg werr oel ewe wee
2 seg werr ujf etr wuk
2 seg werr los hjd wee
编辑:问题已经改变。
如何使用第二个表中唯一的列获取所有行?即我只想要来自D,E和F的数据,其中表1中A,B,C中的值对应于表2中的A,B,C值。
例如,假设A = 1且B = sdf,我想要行:
sdsd yuj uui ddd
sdsd sss sdd ssw
sdsd jut scv sef
我可以去:SELECT * FROM Table2 WHERE A ='1'AND B ='sdf'但我会得到
1 sdf sdsd yuj uui ddd
1 sdf sdsd sss sdd ssw
1 sdf sdsd jut scv sef
答案 0 :(得分:1)
最直接的方式是:
Select D, E From Table2
如果您正在寻找动态内容,解决方案将取决于您使用的是哪个数据库供应商。没有不可知的动态解决方案。
答案 1 :(得分:1)
只需列出您要选择的列。
例如,给定A='1'
和B='sdf'
:
SELECT C,D,E,F FROM Table2 WHERE A='1' AND B='sdf'
答案 2 :(得分:0)
您希望在LEFT JOIN
中使用特殊操作的RIGHT JOIN
(或WHERE
)来查找不匹配的值。
在这种情况下,像这样:
SELECT Table2.*
FROM Table2 LEFT JOIN Table1 USING (SomeCommonField)
WHERE Table1.SomeCommonField IS NULL
答案 3 :(得分:0)
通常,您需要访问系统表或目录视图才能执行此操作。确切的语法取决于您使用的DBMS ...
答案 4 :(得分:0)
似乎在这里你有一个唯一的例子,其中NATURAL JOIN是正确的解决方案,因为你的列名在两个表中完全相同。
SELECT D, E, F
FROM table1
NATURAL JOIN table2
WHERE a = '1'
AND b = 'sdf'
AND c = 'sdsd'