作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在看这段代码:
select customers.name
from customers, orders, order_items, books
where customers.customerid = orders.customerid
and orders.orderid = order_items.orderid
and order_items.isbn = books.isbn
and books.title like '%java%';
并且发现很难理解。
首先我有4个表,代码正在制作一个动态表,
我应该以不同的顺序查看它以便更好地理解它吗?
首先,我选择 customer.name,但只有在运行最后一个代码并且我有了动态表之后,对吧?
我应该尝试使用之前制作的动态表逐行排列每两个表吗?
而且在制作表格时,表格中的所有数据都被写入还是仅写入我在何处询问的数据?
非常感谢您的帮助。
最佳答案
根据理论,当您查询多个表并尝试连接所有表时,会计算所有涉及的表的临时叉积。这意味着总行数是每个表的行数的乘积。
然而,在实践中,SQL(在您的例子中是 MySQL)的实现将注意有效地计算查询。根据各种参数计算查询执行路径,并用于获取所需的输出。
编写上述语句的更好方法是遵循新语法:
SELECT customers.name FROM customers
INNER JOIN orders ON customers.customerid = orders.customerid
INNER JOIN order_items ON orders.orderid = order_items.orderid
INNER JOIN books ON order_items.isbn = books.isbn
WHERE books.title LIKE '%java%'
阅读更多内容 here出于原因。
关于mysql - 理解加盟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4329043/
我是一名优秀的程序员,十分优秀!