SELECT * FROM table1,table2,table3 [重复]
Posted
技术标签:
【中文标题】SELECT * FROM table1,table2,table3 [重复]【英文标题】:SELECT * FROM table1, table2, table3 [duplicate] 【发布时间】:2017-11-15 07:00:45 【问题描述】:我有问题... 在 table1 中我有一个 id,我必须比较 table2 中的 id,然后获取 table2 中的第二个 id 并将其与 table3 进行比较并得到一个数据。 示例
TABLE1
ID NAME ECC...
1 Jhon
2 Frank
TABLE2
ID ID2 ECC..
1 4
2 8
TABLE3
ID NAME
4 Sea
8 Hello
如果我查找 id 1,结果一定是 Sea 如果我查找 id 2,结果必须是 Hello
谢谢!
【问题讨论】:
您标记了 3 种不同风格的 SQL……是哪一种?答案是INNER JOIN
...只要研究一下这个
所以?加入他们,这并不难。
w3schools.com/sql/sql_join.asp
这个问题引起了很多摩擦。另外,RDBMS 是未知的。 mysql 和 MSSQL 是两种不同的动物;你应该相应地标记。这里也没有“php”。
【参考方案1】:
查询:
SELECT a.name As Name FROM table3 a JOIN
(SELECT b.id2 AS id FROM table1 a JOIN table2 b ON a.id = b.id)b
ON a.id = b.id where b.id = <your id number (1,2) Anything>
【讨论】:
一种非常奇怪的方法来解决这个问题...... 这种方法比在一个查询中加入 3 个表要好得多。 为什么更好?你正在加入 3 张桌子。 你是说你的子查询比显式连接有好处?请解释一下...我相信我们都会有兴趣听听您的争论 你的“观点”是错误的。【参考方案2】:select Table2.Id,Table3.Name from Table1 inner join Table2 on Table2.ID2 = Table3.Id
【讨论】:
您在 Table3 上缺少一个联接。此查询将失败。 sorry select Table2.Id,Table3.Name from Table2 inner join Table3 on Table2.ID2 = Table3.Id 试试这个【参考方案3】:你应该使用 joins。
您的查询将如下所示:
SELECT t3.name
FROM table3 t3
LEFT JOIN table2 t2 ON t3.id = t2.id2
LEFT JOIN table1 t1 ON t2.id2 = t1.id
WHERE t1.id = <your_number>
【讨论】:
谢谢!!很实用的方法!!【参考方案4】: SELECT Table3.NAME
FROM Table1
INNER JOIN Table2
ON Table1.ID = Table2.ID
INNER JOIN Table3
ON Table3.ID = Table2.ID2
WHERE Table1.ID = 1 -- Your Search here
【讨论】:
【参考方案5】:应该是这样的:
select table3.name as name3
from table3
where table3.ID = table2.ID2
and table2.ID = table1.ID
and table1.ID = <YOURNUMBERHERE>
【讨论】:
你在这里缺少一些连接...... @scsimon 使用 where-and 组合进行一些隐式连接,也可以使用 LEFT JOIN 等执行此操作,但它是从我的脑海中写出来的,所以没有连接 ;) 但你是对的, JOIN 是最好的方法 不,这里没有隐式连接,table2
和 table1
在from
子句中没有提及以上是关于SELECT * FROM table1,table2,table3 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Mysql select id from table1 and select count(id) from table2
MYSQL中 select * from table1 t1, table2 t2 where t1.name= t2.name
SQL 语句 select sum(a) from table1 where b=3
select * from A.B.C.D sqlserver 中 select * from .Literary_PuDong.dbo.Users