2016-02-26 3 views
0

Я пытаюсь получить значение count в переменную, которая будет использоваться с другим запросом.Использование запроса для определения значения переменной (MySQL)

НО он не работает, он говорит:

[Err] 1064 - У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи «SELECT COUNT (имя_столбца) FROM поля WHERE табетический = 4» в строке 1

Запрос я использую:

SET @_count = SELECT COUNT(columnname) FROM field WHERE tabid = 4; 
+0

Является ли 'field' столбец или таблицу? Это должна быть таблица. – Zach

+0

Поле - это таблица, даже если она не работает –

+0

Почему бы не использовать какой-либо серверный язык, который вы используете, и получить запрос и сохранить его в переменной для языка, например PHP. Затем заполните еще один sql-запрос после получения результата первого? – Zach

ответ

1

Вам понадобится обернуть запрос SQL Select в круглых скобках.

SET @_count = (SELECT COUNT(columnname) FROM field WHERE tabid = 4); 
+0

Это работает, но не раньше ... - отметит как принято, как только, приветствует –

0
SELECT COUNT(*) into @_count from field WHERE tabid = 4; 

select @_count; 

результата

0

ли это, это, как:

/** 
    * Query to find and select all the fields with a specific name on any tab id 
    */ 

    -- Prepare the variables for the query 
    SET @_tabid = 4; -- Replace with your tab id 
    SET @_lowerletter = "%%"; -- Replace with your lower case search 
    SET @_upperletter = "%%"; -- Replace with your upper case search 
    SET @_upperlimit = (SELECT COUNT(columnname) FROM field WHERE tabid = @_tabid); 
    SET @_lowerlimit = 0; -- Set your lower limit 
    SET @_query = "SELECT * FROM field 
           WHERE tabid = ? 
           AND (
            (columnname LIKE ? OR columnname LIKE ?) OR 
            (fieldname LIKE ? OR fieldname LIKE ?) OR 
            (fieldlabel LIKE ? OR fieldlabel LIKE ?) 
           ) 
           ORDER BY tabid, fieldid ASC 
           LIMIT ?, ?;"; 
    -- //Prepare 

    -- Prepare and execute query 
    PREPARE stmt FROM @_query; 
      EXECUTE stmt USING 
       @_tabid, 
       @_lowerletter, @_upperletter, -- Upper and lower search terms 
       @_lowerletter, @_upperletter, -- Upper and lower search terms 
       @_lowerletter, @_upperletter, -- Upper and lower search terms 
       @_lowerlimit, @_upperlimit; -- Upper and lower limits 
    DEALLOCATE PREPARE stmt; 
    -- // Execute 
Смежные вопросы