mysql - 带有嵌入表的动态 SQL

标签 mysql sql

我有一个查询可以完成这项工作,但我需要获取 location_name,而不是 trans_inventory(这是位置的 ID)。

这个正在努力获取 id

SELECT *  
FROM {TABLE} 
WHERE trans_product = 646 
ORDER BY trans_date2 DESC Limit 1

但我想知道我是否可以这样做,以某种方式嵌入位置表,我已经尝试过,但下面不起作用

SELECT *, site_location.location_name
FROM site_trans 
cross join 
(select * 
 From site_location) 
site_location
WHERE trans_product=646 ORDER BY trans_date2 DESC Limit 1

最佳答案

JOIN 中的 sl.location 必须是 site_location 位置 id 字段名称 - 我使用了 locastion_id,但它也可能是 id。我使用 LEFT JOIN 来避免在没有匹配的位置 id 的情况下丢失 site_trans。

SELECT s.*, sl.location_name
FROM site_trans AS s
LEFT JOIN site_location AS sl ON sl.location_id = s.location_id
WHERE s.trans_product=646 
ORDER BY s.trans_date2 DESC 
Limit 1

关于mysql - 带有嵌入表的动态 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22532355/

相关文章:

php - INSERT INTO TBL_payments undefined index 和父子外键

mysql - 获取数据库中最近的位置

php - 从选择结果更新行

mysql - 如何在 MySQL 的多列唯一约束中将时间跨度指定为键?

mysql - 在 MySQL 上模拟滞后函数

mysql - 如何将 DB2 中的 for 语句转换为 MYSQL

mysql - 从 SQL Management Studio 到 RPI MySql

sql - 在 MySQL 中移动和删除行

sql - 交叉应用(选择顶部 1)比 row_number() 慢得多

mysql - 使用mysql的node js express服务器挂了,如何自动重启?