相关疑难解决方法(0)

SQL查询从多个表返回数据

我想知道以下内容:

  • 如何从我的数据库中的多个表中获取数据?
  • 有什么类型的方法可以做到这一点?
  • 什么是联盟和联盟?它们如何彼此不同?
  • 我应该何时使用每一个与其他人相比?

我打算在我的(例如 - PHP)应用程序中使用它,但不想对数据库运行多个查询,我有什么选项可以从单个查询中的多个表中获取数据?

注意:我正在写这篇文章,因为我希望能够链接到我在PHP队列中经常遇到的众多问题的精心编写的指南,因此我可以在发布答案时链接到此以获取更多详细信息.

答案涵盖以下内容:

  1. 第1部分 - 联接和联盟
  2. 第2部分 - 子查询
  3. 第3部分 - 技巧和有效代码
  4. 第4部分 - From子句中的子查询
  5. 第5部分 - John's Tricks的混合包

mysql sql select

425
推荐指数
6
解决办法
78万
查看次数

ON子句中的MySQL未知列

我有以下MySQL查询:

SELECT p.*,
    IF(COUNT(ms.PropertyID) > 0,1,0) AS Contacted,
    pm.MediaID,
    date_format(p.AvailableFrom, '%d %b %Y') AS 'AvailableFrom',
    astext(pg.Geometry) AS Geometry
FROM property p, propertygeometry pg
    JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216
    LEFT JOIN message ms ON ms.PropertyID = p.id AND ms.SenderID = 384216
    LEFT JOIN property_media pm ON pm.PropertyID = p.id AND pm.IsPrimary = 1
WHERE p.paused = 0
    AND p.PropertyGeometryID = pg.id
GROUP BY p.id
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

#1054 - 'on子句'中的未知列'p.id'

据我所知,查询看起来正确,任何想法可能是错的?

mysql sql mysql-error-1054

55
推荐指数
2
解决办法
7万
查看次数

你遵循什么SQL编码标准?

有没有广泛使用的SQL编码标准?SQL与C/C++类型的编程语言略有不同.真的不知道如何最好地格式化它的可读性.

sql coding-style

50
推荐指数
4
解决办法
5万
查看次数

MySQL JOIN的评估顺序是什么?

我有以下查询:

SELECT c.*
FROM companies AS c
JOIN users AS u USING(companyid)
JOIN jobs AS j USING(userid)
JOIN useraccounts AS us USING(userid)
WHERE j.jobid = 123;
Run Code Online (Sandbox Code Playgroud)

我有以下问题:

  1. USING语法是否与ON语法同义?
  2. 这些连接是从左到右评估的吗?换句话说,这个查询是否说:x =公司加入用户; y = x JOIN工作; z = y JOIN useraccounts;
  3. 如果问题2的答案是肯定的,那么假设公司表有companyid,userid和jobid列是否安全?
  4. 我不明白WHERE子句在引用别名"j"时如何用于在公司表上选择行

任何帮助,将不胜感激!

mysql sql join

26
推荐指数
2
解决办法
2万
查看次数

linq to sql:从同一个表中连接多个列

如何通过Linq从同一个表中连接多个列?

例如:我已经有了......

join c in db.table2 on table2.ID equals table1.ID
Run Code Online (Sandbox Code Playgroud)

我需要添加这个......

join d in db.table2 on table2.Country equals table1.Country 
Run Code Online (Sandbox Code Playgroud)

join linq-to-sql

16
推荐指数
4
解决办法
4万
查看次数

为什么选择多个表而不加入

在连接表时,传统上可以使用SQL89的加入方式

SELECT * FROM t1, t2 WHERE t1.id = t2.t1_id;
Run Code Online (Sandbox Code Playgroud)

但是从SQL92标准开始,我们现在可以使用JOIN语法进行连接

SELECT * FROM t1 JOIN t2 on t1.id=t2.t1_id;
Run Code Online (Sandbox Code Playgroud)

有没有理由为什么有人会SELECT在没有加入的情况下来自多个牌桌 现在,我知道人们使用连接数据UNION,但这不是我所说的.

我们之所以在FROM条款中添加带逗号的表格是为了向后兼容吗?或者是否存在任何使用旧语法的现实场景只能通过连接进行?

sql

7
推荐指数
1
解决办法
2万
查看次数

Inner Join vs Natural Join vs USING子句:有什么优势吗?

想象一下,我有两个简单的表,例如:

CREATE TABLE departments(dept INT PRIMARY KEY, name);
CREATE TABLE employees(id PRIMARY KEY, fname, gname,
    dept INT REFERENCES departments(dept));
Run Code Online (Sandbox Code Playgroud)

(当然简化).

我可以有以下任何陈述:

SELECT * FROM employees e INNER JOIN departments d ON e.dept=d.dept;
SELECT * FROM employees e NATURAL JOIN departments d;
SELECT * FROM employees e JOIN departments d USING(dept);
Run Code Online (Sandbox Code Playgroud)

可以在这里找到一个工作示例:SQL Fiddle:http://sqlfiddle.com/#!15/864a5/13/10

它们都给出了几乎相同的结果 - 当然是相同的行.

我一直更喜欢第一种形式,因为它具有灵活性,可读性和可预测性 - 你清楚地定义了什么与什么有关.

现在,除了第一种形式有重复的列之外,其他两种形式是否真的有优势?或者他们只是语法糖?

我可以看到后一种形式的缺点是你应该命名你的主键和外键相同,这并不总是实用的.

sql join

6
推荐指数
1
解决办法
3650
查看次数

对于执行速度慢的查询,您最酷的SQL优化是什么?

刚跟我的一位同事说话.在去咖啡机的路上,他一步一步地走着.

我问他"'swarmy'走路有什么用?",他说,"我只是将长达2小时的查询减少到40秒!感觉非常好".

他改变了一个存储过程,即使用游标并引入了一个临时表,该表是从原始数据集重构的 - 我将很快给他发电子邮件,以获得有关实际实现的更多信息.

但最终,他嗡嗡作响.

问题是,什么是SQL,它会影响你的想法并让你嗡嗡作响,同时优化性能低下的查询?

sql performance refactoring

5
推荐指数
3
解决办法
790
查看次数

SQL样式问题:FROM子句或WHERE子句中的INNER JOIN?

如果要在SQL查询中连接多个表,您认为在哪里放置连接语句更好:在FROM子句或WHERE子句中?

如果您要在FROM子句中执行此操作,那么如何对其进行格式化以使其清晰可读?(我说的是缩进,换行,一般的空格.)

每个都有任何优点/缺点吗?

sql database

3
推荐指数
2
解决办法
5254
查看次数

Mysql查询说明

在加入情侣表期间的某个时候,我看到放置的条件标准在ON()子句中,有时在其中,意味着在WHERE之后.

在大量数据中,哪种方法更优化,更快?

什么会更快1.

SELECT a.column1, b.column2
FROM tablea a
JOIN tableb b
ON a.column3 = b.column3 
WHERE b.column2='Y' AND a.column1='N'
Run Code Online (Sandbox Code Playgroud)

或者这个2.

SELECT a.column1, b.column2
FROM tablea a
JOIN tableb b
ON (a.column3 = b.column3 AND b.column2='Y')
WHERE  a.column1='N'
Run Code Online (Sandbox Code Playgroud)

mysql optimization

1
推荐指数
1
解决办法
74
查看次数