powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / В части WHERE конкатенация колонок
7 сообщений из 7, страница 1 из 1
В части WHERE конкатенация колонок
    #39481005
ball37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Мне нужно сделать выборку, в которой нужно проверить вхождение конкатенации двух столбцов в набор значений, то есть:

$values = 'value1,value2,value3';

SELECT * FROM table WHERE column1 + column2 IN ($values);

Естественно, ругается, так как колонки column1 + column2 не находит. Как ещё можно решить такую задачу?
...
Рейтинг: 0 / 0
В части WHERE конкатенация колонок
    #39481016
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык конкатенация - это CONCAT(), а не плюс, который означает суммирование.
...
Рейтинг: 0 / 0
В части WHERE конкатенация колонок
    #39481017
ball37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут не имеет значения, что column1 + column2, что CONCAT(column1, column2) или CONCAT_WS(column1, column2) - ошибка та же, что такой колонки нет.
...
Рейтинг: 0 / 0
В части WHERE конкатенация колонок
    #39481024
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
mysql> SHOW CREATE TABLE `t1`;
+-------+-------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                      |
+-------+-------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `f1` varchar(1) NOT NULL,
  `f2` varchar(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM `t1`;
+----+----+
| f1 | f2 |
+----+----+
| a  | a  |
| a  | b  |
| b  | b  |
| b  | a  |
+----+----+
4 rows in set (0.00 sec)

mysql> SELECT * FROM `t1` WHERE CONCAT(`f1`,`f2`) IN ('aa','ab');
+----+----+
| f1 | f2 |
+----+----+
| a  | a  |
| a  | b  |
+----+----+
2 rows in set (0.02 sec)

mysql>


Не вижу проблем. Что я делаю не так?
...
Рейтинг: 0 / 0
В части WHERE конкатенация колонок
    #39481030
ball37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT * FROM `t1` WHERE CONCAT(`f1`,`f2`) IN ('aa','ab');

Этот код у меня почему-то не работает. Выдаёт наподобие "Unknown column 'f1f2' in 'where clause'".

Но почему-то работает, если IN заменить на равенство, то есть

SELECT * FROM `t1` WHERE CONCAT(`f1`,`f2`) = 'aa';

Ну, или соответственно, убрать CONCAT и оставить WHERE f1 IN ('aa','ab) - то ошибок тоже нет, работает.

Не работает только CONCAT в комбинации с IN. Может дело в версии mysql.
...
Рейтинг: 0 / 0
В части WHERE конкатенация колонок
    #39481047
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может и в версии. У меня:

| innodb_version | 5.5.55 |
| protocol_version | 10 |
| version | 5.5.55 |
| version_compile_machine | amd64 |
| version_compile_os | FreeBSD10.3 |
...
Рейтинг: 0 / 0
В части WHERE конкатенация колонок
    #39481332
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ball37 , подтвердите свои слова цитатами с консоли - вот как это сделал vkle в 20606341 . Причём и то, что запрос приводит к ошибке, и DDL таблицы.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / В части WHERE конкатенация колонок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]