mysql - 使用反连接的 SQL 查询

标签 mysql sql select

我正在定义“匹配”以便稍后在某些 php 中使用,因此我在选择中定义了它。我似乎无法使此查询正常工作...我收到解析错误。有什么想法吗?

SELECT 
    aif_id, 
    fee_source_id, 
    company_name_per_sedar, 
    document_filing_date, 
    NVL a_aif_remaining.aif_id, 0, 1 match
FROM a_aif, a_aif_remaining
LEFT JOIN a_aif_remaining ON a_aif_remaining.aif_id = a_aif.aif_id
ORDER BY aif_id DESC;

这也行不通:

SELECT 
    aif_id, 
    fee_source_id, 
    company_name_per_sedar, 
    document_filing_date, 
    CASE IF a_aif_remaining.aif_id  THEN 0 ELSE 1 match
FROM a_aif, a_aif_remaining
LEFT JOIN a_aif_remaining ON a_aif_remaining.aif_id = a_aif.aif_id
ORDER BY aif_id DESC;

最佳答案

您收到该错误的原因是 MATCH 是保留字。你应该用反引号转义它。这里是保留字列表

试试这个,它应该是CASE WHEN...

SELECT aif_id, 
       fee_source_id, 
       company_name_per_sedar, 
       document_filing_date, 
       CASE 
            WHEN a_aif_remaining.aif_id  IS NULL -- you should have condition on this line
            THEN 0 
            ELSE 1 
       END `match`
FROM   a_aif
       LEFT JOIN a_aif_remaining 
          ON a_aif_remaining.aif_id = a_aif.aif_id
ORDER BY aif_id DESC;

如果该列的值为NULL,您可以简单地使用IF(最小化代码),例如

SELECT aif_id, 
       fee_source_id, 
       company_name_per_sedar, 
       document_filing_date, 
       IF(a_aif_remaining.aif_id IS NULL, 0, 1) `match`
FROM   a_aif
       LEFT JOIN a_aif_remaining 
          ON a_aif_remaining.aif_id = a_aif.aif_id
ORDER BY aif_id DESC;

关于mysql - 使用反连接的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14117961/

相关文章:

选择名为 YEAR 的列时出现 SQL 错误

php - 从当前id获取上一行和下一行数据 SQL PHP

php - mysql在PHP中选择不同的查询

php - 获取表中重复数字值最多的名称

php - 从 php 请求中获取一组值并运行 mysql 查询

mysql - Phpmyadmin 不显示 "privileges"选项卡

PHP/MySQL - 如何使用 PHP 在网页上的任何位置显示 PHP 生成的文本?

php - 在 codeigniter 上显示 2 个表

SQL Server 列的大小差异

MySQL跨多个表计数并获得单个值