【问题标题】:mysql find by description where description equals to id number without using id colummysql通过描述查找其中描述等于id号而不使用id列
【发布时间】:2014-04-16 18:54:09
【问题描述】:

你好,这里的第一个问题。 我有一个查询,它搜索在 where 子句中传递 id 的列“description”,而不使用“id”列,这怎么可能?

表参数_公司

id description_parameter value_parameter id_company
1           BASE UTC                     7                     1
2          保修                 10                     1
3           BASE UTC                   15                       2

这确实有效,因为描述没有数字

SELECT
value_parameter
FROM
parameters_companies
WHERE
description_parameter = 1 AND
id_company = 1

但这有效。为什么以及如何工作?使用它是一个好习惯吗?

SELECT
parameters_companies.value_parameter
FROM
parameters_companies
WHERE
parameters_companies.description_parameter = 1 AND
parameters_companies.id_company = 1

这将返回 value_parameter = 7,如果您更改 id_company = 2,则返回 value_parameter = 15 那么,parameters_companies.description_parameter = 1 按“id 列”搜索,然后按具有相同“描述”的列搜索?

编辑: 这是因为被定义为我没有注意到的“枚举列”,我从不使用那种类型的列 感谢@CaptRespect @Up_One 为您的时间。

【问题讨论】:

  • 如果您更改 description_parameter = 2,按照您的逻辑,您不会期望 value_parameter = 10 吗?您使用的是什么数据库,列是如何定义的?
  • Mysql 和 php,它是一个“枚举”列

标签: php mysql search find identity-column


【解决方案1】:

它们都将正常运行,但不会返回任何内容!
您的意思是什么?

mysql> create table parameters_companies(
    -> id int,
    ->  description_parameter varchar(20),
    ->  value_parameter int,
    ->  id_company int
    ->  );

insert into parameters_companies values ('1','BASE UTC','7'Query OK, 0 rows affected (0.01 sec)

,mysql>
mysql> insert into parameters_companies values ('1','BASE UTC','7','1');
insert into paraQuery OK, 1 row affected (0.00 sec)

metermysql> insert into parameters_companies values ('2','WARRANTY','10','1');
 intoQuery OK, 1 row affected (0.00 sec)

 pmysql> insert into parameters_companies values ('3','BASE UTC','15','2');
Query OK, 1 row affected (0.00 sec)

ct * from parameters_companies;mysql>
mysql> select * from parameters_companies;
+------+-----------------------+-----------------+------------+
| id   | description_parameter | value_parameter | id_company |
+------+-----------------------+-----------------+------------+
|    1 | BASE UTC              |               7 |          1 |
|    2 | WARRANTY              |              10 |          1 |
|    3 | BASE UTC              |              15 |          2 |
+------+-----------------------+-----------------+------------+
3 rows in set (0.00 sec)

mysql>
mysql> SELECT
    -> value_parameter
    -> FROM
    -> parameters_companies
    -> WHERE
    -> description_parameter = 1 AND
    -> id_company = 1;

SELEEmpty set (0.00 sec)

mysql>
mysql>
mysql> SELECT
    -> parameters_companies.value_parameter
    -> FROM
    -> parameters_companies
    -> WHERE
    -> parameters_companies.description_parameter = 1 AND
    -> parameters_companies.id_company = 1;
Empty set (0.00 sec)

mysql>

【讨论】:

  • 感谢答案,我问了很多,一位同事告诉我这是因为它是一个枚举列
猜你喜欢
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
相关资源
最近更新 更多