2010-05-25 4 views
0

У меня есть таблица с двумя столбцами: integer и var char. Мне даны только целые значения, но мне нужно выполнить работу над значениями var char (string).SQL с использованием суммы для подсчета результатов нескольких подзапросов

Учитывая целое число и список других целых чисел (без перекрытия), я хочу найти строку для этого единственного целого. Затем я хочу взять эту строку и выполнить команду INSTR с этой строкой и все остальные строки для всех остальных целых чисел. Затем я хочу получить сумму всего INSTR, поэтому результатом будет одно число.

Итак, скажем, у меня есть int x и список y = [y0, y1, y2].

Я хочу сделать 3 команды Instr как

SUM(INSTR(string for x, string for y0), INSTR(string for x, string for y1), INSTR(string for x, string for y2)) 

Я думаю, что им идет в неправильном направлении, это то, что у меня есть. Я не очень хорошо разбираюсь с суб-запросами.

SELECT SUM 
(
    SELECT INSTR 
    (
    SELECT string FROM pages WHERE int=? LIMIT 1, 
    (
     SELECT string FROM pages WHERE id=? OR id=? OR id=? LIMIT 3 
    ) 
) 
) 

ответ

0

В основном я использую MS SQL Server, но вы можете попробовать это в MySQL. Вы в основном хотите использовать соединение, а не подзапросы:

SELECT 
    SUM(INSTR(x.string, y.string)) 
FROM 
    pages x 
INNER JOIN pages y ON 
    y.int IN (?, ?, ?) AND 
    INSTR(x.string, y.string) > 0 
WHERE 
    x.int = ? 

Конечно, «INT» для имени столбца должен быть изменены.

Смежные вопросы