0

後で一部の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;
4

1 に答える 1

3

そのエラーが発生する理由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;
于 2013-01-02T06:51:29.437 に答える