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 是最好的方法 不,这里没有隐式连接,table2table1from 子句中没有提及

以上是关于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

OpenOffice Base LIKE 与列

select * from A.B.C.D sqlserver 中 select * from .Literary_PuDong.dbo.Users

mysql 选择在一个table不在另一个table的数据