【问题标题】:How do i search for multiple column values in a php table that have the same OTHER column values?如何在 php 表中搜索具有相同 OTHER 列值的多个列值?
【发布时间】:2021-08-28 21:39:46
【问题描述】:

我的计算机上有一些用于电影的 mysql 表。一张表是关于演员表的信息(movieID#、castID#、charName)。

例子

#movieCast 表

MOVIEID                :  idNum      :     charName

The Black Velvet Gown  :  Bob Peck   :     Miller

The Black Velvet Gown  : Janet McTeer  :  Riah Millican

有没有一种方法可以使用单个搜索来搜索数据库,以便我可以搜索同时拥有两个演员的电影?这样两者都必须在电影中。还是我必须为第一个演员的结果创建一个数组,为第二个演员的结果创建一个数组,然后比较它们?

【问题讨论】:

  • 到目前为止您尝试过什么?你被困在哪里了?

标签: mysql search


【解决方案1】:

假设这个架构:

create table movieCast (
  movieID varchar(255),
  castID varchar(255),
  charID varchar(255)
);

insert into movieCast (movieID, castID, charID) values (
  'The Black Velvet Gown',
  'Bob Peck',
  'Miller'
);

insert into movieCast (movieID, castID, charID) values (
  'The Black Velvet Gown',
  'Janet McTeer',
  'Riah Millican'
);

insert into movieCast (movieID, castID, charID) values (
  'Just Bob',
  'Bob Peck',
  'Himself'
);

您可以使用这样的查询来获取 Bob 和 Janet 的电影(请注意,只有 Bob Peck 主演的电影“Just Bob”不会出现在结果中):

select movieID from movieCast
where castID in ('Bob Peck', 'Janet McTeer')
group by movieID
having count(*) = 2;

关键是将having count(*) = 2 更改为您在where castID in ('Bob Peck', 'Janet McTeer') 中放置的任意数量的演员

您可以查看这个小提琴以了解它的实际效果:http://sqlfiddle.com/#!9/722025/7/0

【讨论】:

    【解决方案2】:

    只需在搜索中使用IN

    SELECT * FROM movieCast
    WHERE charName IN ('Riah Millican', 'Miller') AND 
    movieID = 'The Black Velvet Gown';
    

    你的英语不好,所以我只是猜测你的问题是什么。 :)

    【讨论】:

      猜你喜欢
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多