Как выбрать char_length из (выберите ...) в MySQL - PullRequest
1 голос
/ 13 октября 2019

Мне нужно выбрать длину символа строки, которую я могу получить другим выбором.

SELECT DISTINCT(TABLE_SCHEMA) FROM INFORMATION_SCHEMA.TABLES LIMIT 0, 1

возвращает

TABLE_SCHEMA
mysql

Теперь я хочу получить char_length этого mysql исделать это одним запросом.

Эти запросы

SELECT CHAR_LENGTH(SELECT DISTINCT(TABLE_SCHEMA) FROM INFORMATION_SCHEMA.TABLES LIMIT 0, 1)
SELECT CHAR_LENGTH(DISTINCT(TABLE_SCHEMA) FROM INFORMATION_SCHEMA.TABLES LIMIT 0, 1)

возвращают синтаксическую ошибку.

Так как же создать запрос?

1 Ответ

0 голосов
/ 13 октября 2019

Для начала: если вы просто ищете список баз данных, вы хотите использовать information_schema.schemata вместо information_schema.tables. Это избавляет от необходимости использовать DISTINCT, и тогда вы можете просто сделать:

SELECT schema_name, CHAR_LENGTH(schema_name) schema_name_length
FROM information_schema.schemata
LIMIT 0, 1

NB: LIMIT без предложения ORDER BY не является хорошей практикой. Вы не можете предсказать, какие записи появятся первыми.


Если по какой-то причине вы хотите придерживаться текущего запроса, вам нужно будет превратить его в подзапрос следующим образом:

SELECT TABLE_SCHEMA, CHAR_LENGTH(TABLE_SCHEMA) TABLE_SCHEMA_LENGTH
FROM (
    SELECT DISTINCT(TABLE_SCHEMA) FROM INFORMATION_SCHEMA.TABLES LIMIT 0, 1
) x
...