从表中选择A列或B列中的值

伊万·莱尔

我正在处理电影数据库,并且有一个链接表,因此可以将电影链接到它们的续集。我已经编写了以下查询,以便可以返回链接表的任何列中的movie_id所在的续集列表,但是我想知道是否有更好的方法可以这样做,因为这似乎是一个漫长的wind回之路。打算吗?

SELECT movie_id, movie_title FROM movies WHERE movie_id in 
    (SELECT movie_1 FROM lk_movies WHERE movie_1 = 1  or  movie_2 = 1 or  movie_3 = 1 or movie_4 = 1 or movie_5 = 1 or movie_6 = 1 or movie_7 = 1 or movie_8 = 1 or movie_9 = 1 or movie_10 = 1)
or movie_id in 
    (SELECT movie_2 FROM lk_movies WHERE movie_1 = 1  or  movie_2 = 1 or  movie_3 = 1 or movie_4 = 1 or movie_5 = 1 or movie_6 = 1 or movie_7 = 1 or movie_8 = 1 or movie_9 = 1 or movie_10 = 1)
or movie_id in 
    (SELECT movie_3 FROM lk_movies WHERE movie_1 = 1  or  movie_2 = 1 or  movie_3 = 1 or movie_4 = 1 or movie_5 = 1 or movie_6 = 1 or movie_7 = 1 or movie_8 = 1 or movie_9 = 1 or movie_10 = 1)
or movie_id in 
    (SELECT movie_4 FROM lk_movies WHERE movie_1 = 1  or  movie_2 = 1 or  movie_3 = 1 or movie_4 = 1 or movie_5 = 1 or movie_6 = 1 or movie_7 = 1 or movie_8 = 1 or movie_9 = 1 or movie_10 = 1)
or movie_id in 
    (SELECT movie_5 FROM lk_movies WHERE movie_1 = 1  or  movie_2 = 1 or  movie_3 = 1 or movie_4 = 1 or movie_5 = 1 or movie_6 = 1 or movie_7 = 1 or movie_8 = 1 or movie_9 = 1 or movie_10 = 1)
or movie_id in 
    (SELECT movie_6 FROM lk_movies WHERE movie_1 = 1  or  movie_2 = 1 or  movie_3 = 1 or movie_4 = 1 or movie_5 = 1 or movie_6 = 1 or movie_7 = 1 or movie_8 = 1 or movie_9 = 1 or movie_10 = 1)
or movie_id in 
    (SELECT movie_7 FROM lk_movies WHERE movie_1 = 1  or  movie_2 = 1 or  movie_3 = 1 or movie_4 = 1 or movie_5 = 1 or movie_6 = 1 or movie_7 = 1 or movie_8 = 1 or movie_9 = 1 or movie_10 = 1)
or movie_id in 
    (SELECT movie_8 FROM lk_movies WHERE movie_1 = 1  or  movie_2 = 1 or  movie_3 = 1 or movie_4 = 1 or movie_5 = 1 or movie_6 = 1 or movie_7 = 1 or movie_8 = 1 or movie_9 = 1 or movie_10 = 1)
or movie_id in 
    (SELECT movie_9 FROM lk_movies WHERE movie_1 = 1  or  movie_2 = 1 or  movie_3 = 1 or movie_4 = 1 or movie_5 = 1 or movie_6 = 1 or movie_7 = 1 or movie_8 = 1 or movie_9 = 1 or movie_10 = 1)
or movie_id in 
    (SELECT movie_10 FROM lk_movies WHERE movie_1 = 1  or  movie_2 = 1 or  movie_3 = 1 or movie_4 = 1 or movie_5 = 1 or movie_6 = 1 or movie_7 = 1 or movie_8 = 1 or movie_9 = 1 or movie_10 = 1);
普雷迪普

不幸的Mysql是不支持Unpivot不支持Cross Apply操作员,所以这是我想出的最好的方法

子查询

SELECT movie_1 
FROM   lk_movies 
WHERE  movie_1 = 1 
        OR movie_2 = 1 
        OR movie_3 = 1 
        OR movie_4 = 1 
        OR movie_5 = 1 
        OR movie_6 = 1 
        OR movie_7 = 1 
        OR movie_8 = 1 
        OR movie_9 = 1 
        OR movie_10 = 1 

可以通过反转IN运算符来重写

SELECT movie_10 
FROM   lk_movies 
WHERE  1 IN( movie_1, movie_2, movie_3, movie_4, 
             movie_5, movie_6, movie_7, movie_8, 
             movie_9, movie_10 ) 

然后使用Union all而不是多个OR条件,这里是完整的查询

 SELECT movie_id, 
       movie_title 
FROM   movies 
WHERE  movie_id IN (SELECT movie_1 
                    FROM   lk_movies 
                    WHERE  1 IN( movie_1, movie_2, movie_3, movie_4, 
                                 movie_5, movie_6, movie_7, movie_8, 
                                 movie_9, movie_10 ) 
                    UNION ALL 
                    SELECT movie_2 
                    FROM   lk_movies 
                    WHERE  1 IN( movie_1, movie_2, movie_3, movie_4, 
                                 movie_5, movie_6, movie_7, movie_8, 
                                 movie_9, movie_10 ) 
                    UNION ALL 
                    ...............
                    ...............
                    SELECT movie_10 
                    FROM   lk_movies 
                    WHERE  1 IN( movie_1, movie_2, movie_3, movie_4, 
                                 movie_5, movie_6, movie_7, movie_8, 
                                 movie_9, movie_10 )) 

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从表A中选择不在表B中的列组合

来自分类Dev

如何从嵌套表中选择列值

来自分类Dev

从列值中选择联接表

来自分类Dev

excel:如何从A列中选择其值在B列中不存在的值

来自分类Dev

从表中选择列

来自分类Dev

如果从数组中的 B 列中选择特定值,如何从 A 列中获取值?

来自分类Dev

从表 A 中选择某些列并插入到表 B

来自分类Dev

从SQLAlchemy中的表中选择特定列

来自分类Dev

如何基于表B中的json列从表A中选择行

来自分类Dev

从MySql中的列中选择不同的值

来自分类Dev

从Peewee中的列中选择不同的值

来自分类Dev

从多个列中选择组中的值

来自分类Dev

如何从A列中选择所有不同的值,这些值在mySQL中的B列中具有确定的值

来自分类Dev

从表A中选择所有内容,从表B中选择一列-LEFT JOIN

来自分类Dev

从表中选择行,其中列值是存储过程中传递的值的子集

来自分类Dev

从表 A 的 2 列中选择值对并将其以随机顺序插入另一个表 B

来自分类Dev

从表中选择数据,其中一列中的值之和等于另一列中的值

来自分类Dev

如何从sql表的xml列中选择值

来自分类Dev

从表中选择所有具有不同值的列

来自分类Dev

MYSQL:在单独的表上定义了列名的列中选择值

来自分类Dev

从表中选择数据,同时获取列的MAX值

来自分类Dev

从数据表中选择两列之间的值

来自分类Dev

SQL-从单独表的列值中选择记录计数

来自分类Dev

从表中选择具有不同值的所有列

来自分类Dev

根据列值从单个表中选择多个间隔

来自分类Dev

从空表中选择列的默认值(mysql)

来自分类Dev

使用LINQ(实体框架)从表中选择列值

来自分类Dev

从表的多个列中选择不同的值及其计数

来自分类Dev

jQuery在表中选择两列并逐行比较TD值

Related 相关文章

  1. 1

    从表A中选择不在表B中的列组合

  2. 2

    如何从嵌套表中选择列值

  3. 3

    从列值中选择联接表

  4. 4

    excel:如何从A列中选择其值在B列中不存在的值

  5. 5

    从表中选择列

  6. 6

    如果从数组中的 B 列中选择特定值,如何从 A 列中获取值?

  7. 7

    从表 A 中选择某些列并插入到表 B

  8. 8

    从SQLAlchemy中的表中选择特定列

  9. 9

    如何基于表B中的json列从表A中选择行

  10. 10

    从MySql中的列中选择不同的值

  11. 11

    从Peewee中的列中选择不同的值

  12. 12

    从多个列中选择组中的值

  13. 13

    如何从A列中选择所有不同的值,这些值在mySQL中的B列中具有确定的值

  14. 14

    从表A中选择所有内容,从表B中选择一列-LEFT JOIN

  15. 15

    从表中选择行,其中列值是存储过程中传递的值的子集

  16. 16

    从表 A 的 2 列中选择值对并将其以随机顺序插入另一个表 B

  17. 17

    从表中选择数据,其中一列中的值之和等于另一列中的值

  18. 18

    如何从sql表的xml列中选择值

  19. 19

    从表中选择所有具有不同值的列

  20. 20

    MYSQL:在单独的表上定义了列名的列中选择值

  21. 21

    从表中选择数据,同时获取列的MAX值

  22. 22

    从数据表中选择两列之间的值

  23. 23

    SQL-从单独表的列值中选择记录计数

  24. 24

    从表中选择具有不同值的所有列

  25. 25

    根据列值从单个表中选择多个间隔

  26. 26

    从空表中选择列的默认值(mysql)

  27. 27

    使用LINQ(实体框架)从表中选择列值

  28. 28

    从表的多个列中选择不同的值及其计数

  29. 29

    jQuery在表中选择两列并逐行比较TD值

热门标签

归档