MySQL JOIN 语句 - 同一个表中的引用字段

标签 mysql join field

如何获取表中所有订单的列表,除了(已被引用且类型为-1的订单)

订单表:

id   |   reference_id  | type
---------------------------------- 
1    |                 | 1
---------------------------------- 
2    |                 | 1
---------------------------------- 
3    |   1             | -1
----------------------------------

类似于:

list = ArrayList();

if( order.type > 0 ){
    if( order.id != other_order.reference_id )
        list.add(order)
}

如何在 MySQL 语句中执行此操作?

此语句的结果也是相同的,但使用了 JOIN....等:

select * from orders as a
where a.type > 0 AND not exists 
(select * from orders as b where a.id = b.ref_id)

谢谢

最佳答案

这将为您提供那些被引用的记录和那些有效的记录

SELECT * 
FROM   yourtable A 
       INNER JOIN yourtable B 
               ON A.reference_id = B.order_id 
WHERE  B.reference_type > 0; 

关于MySQL JOIN 语句 - 同一个表中的引用字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18446545/

相关文章:

mysql - 如何更改 SQL 传递 (SPT) 结果集的字段类型?

join - Google Data Studio - 完整外连接空值和数据透视表

mysql - 在 MySQL 中混合 MATCH AGAINST 与 JOINO

php - 查询结果部分分组

mysql - Amazon AWS RDS MySQL - 实例和定价

mysql - 如何导入部分xml到mysql表?

基于连接条件的 SQL 删除

sql - 数据库字段的默认大小

php - 如何检查字段是否存在于 symfony2 表单中?

xcode - 现场节点定位(快速)