SELECT * FROM tbl, где clm LIKE CONCAT ('%', <другой sql запрос LIMIT 1>, '%') - КАК? - PullRequest
7 голосов
/ 23 октября 2010

Как я могу объединить эти два запроса в один?

1) Это находит японский знак для собаки (犬):

SELECT japanese 
  FROM edict 
 WHERE english LIKE 'dog' 
 LIMIT 1;

2) Это находит все японские слова св нем есть знак «собака» (犬):

SELECT japanese 
  FROM edict 
 WHERE japanese LIKE '%犬%';

3) У меня проблемы с объединением этих двух элементов в одно, потому что это не работает?!

SELECT japanese 
FROM edict 
WHERE japanese
LIKE CONCAT('%',
    SELECT japanese FROM edict WHERE english LIKE 'dog' LIMIT 1,'%'
);

Ответы [ 2 ]

22 голосов
/ 23 октября 2010

Скобки важны, поэтому попробуйте это:

SELECT japanese
FROM edict
WHERE japanese LIKE CONCAT('%', 
                           (SELECT japanese FROM edict WHERE english LIKE 'dog' LIMIT 1), 
                           '%');

Возможно, было бы неплохо сообщить нам, какую ошибку вы получили.

5 голосов
/ 23 октября 2010

Использование:

SELECT a.japanese 
  FROM EDICT a
  JOIN EDICT b ON b.japanese = a.japanese
 WHERE b.english LIKE 'dog'

Я не рекомендую использовать LIMIT, но если вам это действительно нужно, используйте:

SELECT a.japanese 
  FROM EDICT a
  JOIN (SELECT t.japanese
          FROM EDICT t
         WHERE t.english LIKE 'dog'
         LIMIT 1) b ON b.japanese = a.japanese
...