mysql - 使用 2 JOINS 仍然显示表中的行,因为连接表中的行不存在

标签 mysql

我正在运行此查询,m2 上的第二个连接用于对结果进行排序,但如果 m2 中的 website_order 行不存在

SELECT 
    a.sequence, 
    CONCAT(a.forename, ' ', a.surname) AS name, 
    a.position 
FROM 
    admin a 
JOIN 
    admin_meta m1 on a.sequence = m1.user 
JOIN 
    admin_meta m2 ON a.sequence = m2.user 
WHERE 
    a.disabled = '' AND 
    m1.field = 'display_on_website' AND 
    m1.value = '1' AND 
    m2.field = 'website_order' 
ORDER BY CAST(m2.value AS DECIMAL)

最佳答案

使用左连接:

SELECT 
    a.sequence, 
    CONCAT(a.forename, ' ', a.surname) AS name, 
    a.position 
FROM 
    admin a 
JOIN 
    admin_meta m1 on a.sequence = m1.user 
LEFT JOIN 
    admin_meta m2 ON a.sequence = m2.user AND m2.field = 'website_order'
WHERE 
    a.disabled = '' AND 
    m1.field = 'display_on_website' AND 
    m1.value = '1' 

ORDER BY CAST(m2.value AS DECIMAL)

关于mysql - 使用 2 JOINS 仍然显示表中的行,因为连接表中的行不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45708300/

相关文章:

简单的两个表连接查询的 MySQL 性能问题

mysql - 我想动态创建存储过程以逗号分隔的列和值

mysql - 从字符串mysql中检索数字

php - SQL查询,JOIN另一个表语法错误

c# - Entity Framework 的原子增量

php - mysql 表中的枚举值

MySql 查询 - 按 id desc 按不同作者顺序查找文章

mysql - Datamapper 是否支持 'On Duplicate Key Update' 或其他更新插入技术?

php - 公共(public)用户个人资料页面

mysql - 删除包含唯一值的所有行