sql >> データベース >  >> RDS >> Mysql

MySQLで優先度を使用して複数の列を検索するにはどうすればよいですか?

    それは解決策の1つである可能性があります:

    SELECT id, desc, abbreviation, etc FROM
    ( 
       SELECT 1 AS rnk,  id, title as 'desc' , abbreviation , etc FROM shows 
       WHERE abbreviation LIKE '%".$term."%'
       UNION 
       SELECT 2 AS rnk,  id, title as 'desc' , abbreviation , etc FROM shows 
       WHERE title LIKE '%".$term."%' 
    ) tab
    ORDER BY rnk
    LIMIT 10;
    

    または、次の方法で同じことを実現できます:

    SELECT  id, desc, abbreviation, etc FROM
    (
        SELECT CASE WHEN abbreviation LIKE '%".$term."%' THEN 1 ELSE 2 END As rnk,
        id, title AS desc, abbreviation, etc 
        FROM shows 
        WHERE abbreviation LIKE '%".$term."%' 
        OR title LIKE '%".$term."%' 
    ) tab
     ORDER BY rnk
     LIMIT 10;
    



    1. Postgresがサブクエリをインライン化するのを防ぐにはどうすればよいですか?

    2. PHPでmysql_*関数を使用すべきではないのはなぜですか?

    3. 括弧内の数字は本当にどういう意味ですか?

    4. ORA-00918:SELECTであいまいに定義された列*