MySQL从具有回退的组中选择

查询有些麻烦。我正在尝试从deposit_type_language_id = 3的表中创建选择,或者如果按deposit_type_id进行分组,则行不存在1(作为后备)。

 +-----------------+--------------------------+-------------------+
    | deposit_type_id | deposit_type_language_id | deposit_type_name |
    +-----------------+--------------------------+-------------------+
    |               1 |                        1 | jewellery         |
    |               1 |                        2 | bijuterii         |
    |               1 |                        3 | šperky            |
    |               2 |                        1 | equipment         |
    |               2 |                        2 | tehnica           |
    +-----------------+--------------------------+-------------------+

我正在尝试以下查询:

SELECT t1.* from deposit_type AS t1 
       INNER JOIN 
           ( SELECT deposit_type_id, min(deposit_type_language_id) from
                    deposit_type group by deposit_type_id ) AS t2 
       ON t1.deposit_type_id=t2.deposit_type_id group by deposit_type_id;

输出为:

+-----------------+--------------------------+-------------------+
| deposit_type_id | deposit_type_language_id | deposit_type_name |
+-----------------+--------------------------+-------------------+
|               1 |                        1 | jewellery         |
|               2 |                        1 | equipment         |
+-----------------+--------------------------+-------------------+

但是我正在尝试实现以下目标:

+-----------------+--------------------------+-------------------+
| deposit_type_id | deposit_type_language_id | deposit_type_name |
+-----------------+--------------------------+-------------------+
|               1 |                        3 | šperky            |
|               2 |                        1 | equipment         |
+-----------------+--------------------------+-------------------+

我的错误在哪里?

表结构:

deposit_type | CREATE TABLE `deposit_type` (
  `deposit_type_id` smallint(5) unsigned NOT NULL,
  `deposit_type_language_id` smallint(5) unsigned NOT NULL,
  `deposit_type_name` varchar(96) NOT NULL,
  PRIMARY KEY (`deposit_type_id`,`deposit_type_language_id`),
  KEY `deposit_type_language_id` (`deposit_type_language_id`),
  CONSTRAINT `deposit_type_ibfk_1` FOREIGN KEY (`deposit_type_language_id`) REFERENCES `language` (`language_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
草莓

愤世嫉俗的人看什么都不顺眼...

SELECT x.deposit_type_id
     , COALESCE(y.deposit_type_language_id,x.deposit_type_language_id) deposit_type_language_id
     , COALESCE(y.deposit_type_name,x.deposit_type_name) deposit_type_name 
  FROM deposit_type x 
  LEFT 
  JOIN deposit_type y 
    ON y.deposit_type_id = x.deposit_type_id 
   AND y.deposit_type_language_id = 3 
 WHERE x.deposit_type_language_id = 1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MySQL 从具有列名的所有表中选择

在 SQL 中的多行中选择具有或不具有特定条件的组

MySQL选择具有相同ID组的所有行

在MySQL中选择具有多个WHERE子句的行

如何在MySQL中选择具有匹配字段的行?

在具有自连接关系的mysql表中选择

MySQL:从具有COUNT()的子查询中选择MAX()

MySQL 从具有规范的文本列中选择

具有选择计数和组的MySQL查询

MySQL:仅选择仅具有特定值的组

mysql 只选择具有一定长度的组

mysql从每个组中选择2行

通过查询DSL从每个组中选择具有最大值的记录

在jQuery的一系列组中选择具有特定值的单选按钮

如何从Pandas DataFrame中的每个组中选择具有最高值的N行

T-SQL在具有聚合/组的查询中选择TOP 1

从具有运行时索引的元组中选择一组值

SQL - 如何从具有相同主键的组行中选择最新日期

从一组连续的 n 行中选择具有最大非 na 列的行

如何在R中的组中选择具有特定值的行

在plsql中选择具有正数和负数的唯一组

Mysql-按组排序,从组中选择最新

mySQL 如何从没有组的重复值中选择 MAX(date)

从带有组的表中选择 mysql 表中的日期>日期

使用MySQL在最近的文章中选择随机的“特色”文章,如果不存在则进行回退

在MySQL中,我如何从具有相似值的行中选择所有ID

MySQL从ID中选择所有具有相同值的行

在Jquery中选择具有标题的元素

如何从具有相同类的一组 div 中选择第二个元素?