标签: where-clause

连接条件中的SQL筛选条件或更高效的where子句

我有一个相对简单的查询连接两个表."Where"标准可以在连接标准中表示,也可以表示为where子句.我想知道哪个更有效率.

查询是从一开始就查找推销员的最大销售额.

情况1

select salesman.salesmanid, max(sales.quantity)
from salesman
inner join sales  on salesman.salesmanid =sales.salesmanid 
                  and sales.salesdate < salesman.promotiondate
group by salesman.salesmanid 
Run Code Online (Sandbox Code Playgroud)

案例2

select salesman.salesmanid, max(sales.quantity)
from salesman
inner join sales  on salesman.salesmanid =sales.salesmanid 
where sales.salesdate < salesman.promotiondate
group by salesman.salesmanid 
Run Code Online (Sandbox Code Playgroud)

注意案例1完全没有where子句

RDBMS是Sql Server 2005

编辑 如果第二部分连接条件或where子句是sales.salesdate <某个固定日期,那么它实际上没有任何加入这两个表的条​​件会改变答案.

sql sql-server join where-clause

27
推荐指数
1
解决办法
2万
查看次数

SQL Server:如何将UNION与两个具有WHERE子句的查询一起使用?

鉴于:

两个需要过滤的查询:

select top 2 t1.ID, t1.ReceivedDate
  from Table t1
 where t1.Type = 'TYPE_1'
 order by t1.ReceivedDate desc
Run Code Online (Sandbox Code Playgroud)

和:

select top 2 t2.ID
  from Table t2
 where t2.Type = 'TYPE_2'
 order by t2.ReceivedDate desc
Run Code Online (Sandbox Code Playgroud)

另外,这些返回ID我正在寻找的:(13,11和12,6)

基本上,我想要两个特定类型数据的两个最新记录.

我想将这两个查询结合在一起,如下所示:

select top 2 t1.ID, t2.ReceivedDate
  from Table t1
 where t1.Type = 'TYPE_1'
 order by ReceivedDate desc
union
select top 2 t2.ID
  from Table t2
 where t2.Type = 'TYPE_2'
 order by ReceivedDate desc
Run Code Online (Sandbox Code Playgroud)

问题:

问题是这个查询是无效的,因为第一个查询select不能有一个order by子句unioned.它 …

sql-server union where-clause

26
推荐指数
3
解决办法
13万
查看次数

Swift"where"数组扩展

从Swift 2.0开始,似乎我们可以更接近适用于谓词情境的泛型类型的扩展.

虽然我们仍然不能这样做:

protocol Idable {
    var id : String { get }
}

extension Array where T : Idable {
    ...
}
Run Code Online (Sandbox Code Playgroud)

......我们现在可以这样做:

extension Array {
    func filterWithId<T where T : Idable>(id : String) -> [T] {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

...和Swift语法接受它.但是,对于我的生活,当我填写示例函数的内容时,我无法弄清楚如何让编译器开心.假设我要尽可能明确:

extension Array {
    func filterWithId<T where T : Idable>(id : String) -> [T] {
        return self.filter { (item : T) -> Bool in
            return item.id == id
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...编译器不会接受提供的过滤,过滤,抱怨

无法使用类型为'((T) - > Bool)'的参数列表调用'filter'

如果将item指定为Idable,则类似.这里有运气吗?

where-clause swift swift-extensions

26
推荐指数
1
解决办法
3万
查看次数

LINQ AND OR条件

所以我设法让这个查询工作

List<string> listStatus = new List<string>() ; 
listStatus.add("Text1");

List<string> listMerchants = new List<string>() ;
listMerchants.add("Text2");


from item in db.vw_Dropship_OrderItems
             where listStatus.Contains(item.StatusCode) 
                      && listMerchants.Contains(item.MerchantId)
             select item;
Run Code Online (Sandbox Code Playgroud)

在这里,我想检查listStatus和listMerchants是否仅为null,然后将它们放在WHERE子句中.

喜欢

如果listMerchants为null,则查询将是

     where listStatus.Contains(item.StatusCode) 
Run Code Online (Sandbox Code Playgroud)

我不想使用switch或If条件.

谢谢

linq where-clause linq-to-sql

25
推荐指数
3
解决办法
14万
查看次数

MySQL Multiple Where子句

我有这样一张桌子:

id  image_id  style_id  style_value
-----------------------------------
1   45        24        red
1   45        25        big
1   47        26        small
1   45        27        round
1   49        28        rect
Run Code Online (Sandbox Code Playgroud)

我想在以下情况下使用image_id列:

  • style_id = 24style_value = red
  • style_id = 25style_value = big
  • style_id = 26style_value = round

我有这样的查询:

$query = mysql_query("SELECT image_id FROM list WHERE (style_id = 24 AND style_value = 'red') AND (style_id = 25 AND style_value = 'big') AND (style_id = 27 AND style_value = 'round')
Run Code Online (Sandbox Code Playgroud)

但我无法得到任何结果.当我用OR制作这个样本时,效果很好.但我必须用AND做到这一点.因为我需要图像id,它们都是"红色,大而直". …

mysql sql where-clause

25
推荐指数
4
解决办法
10万
查看次数

CodeIgniter:如何使用WHERE子句和OR子句

我使用以下代码从带有Code Igniter webapp的MySQL数据库中进行选择:

$query = $this->db->get_where('mytable',array('id'=>10));
Run Code Online (Sandbox Code Playgroud)

这很棒!但我想使用CI库编写以下MySQL语句?

SELECT * FROM `mytable` WHERE `id`='10' OR `field`='value'
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

mysql select codeigniter where-clause

24
推荐指数
4
解决办法
12万
查看次数

Haskell where子句语法在do块中

我试图在Haskell中mapM_do块内重构一个函数调用.我想将lambda提取到(本地)命名函数,以使代码更具可读性.

我的代码最初看起来像这样:

do
  -- ...
  mapM_ (\x -> x + 1) aList

  return aValue
Run Code Online (Sandbox Code Playgroud)

我想改成它

do
  -- ...
  mapM_ func aList
    where func x = x + 1

  return aValue
Run Code Online (Sandbox Code Playgroud)

但我在线上遇到语法错误return aValue.我的实际lambda更复杂:-),但我确实用同样的lambda尝试它,以确保它不是lambda代码中的问题.

我该如何重写这段代码?我应该用let...... in代替吗?

syntax haskell where-clause

24
推荐指数
2
解决办法
8501
查看次数

SQLSTATE [42S22]:未找到列:1054未知列 - Laravel

我正在使用Laravel框架.

我有2个表(用户和成员).当我想登录时,我收到错误消息:

SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'user_email'(SQL:select*from memberswhere user_email=?limit 1)(Bindings:array(0 =>'test@hotmail.com',))

表用户

CREATE TABLE IF NOT EXISTS `festival_aid`.`users` (
  `user_id` BIGINT NOT NULL AUTO_INCREMENT,
  `user_email` VARCHAR(45) NOT NULL,
  `user_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `user_modified` TIMESTAMP NULL,
  `user_deleted` TIMESTAMP NULL,
  `user_lastlogin` TIMESTAMP NULL,
  `user_locked` TIMESTAMP NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE INDEX `user_email_UNIQUE` (`user_email` ASC),
ENGINE = InnoDB;
Run Code Online (Sandbox Code Playgroud)

表成员

CREATE TABLE IF NOT EXISTS `festival_aid`.`members` (
  `member_id` BIGINT NOT NULL AUTO_INCREMENT,
  `member_password` CHAR(32) NOT NULL,
  `member_salt` CHAR(22) NOT NULL,
  `member_token` VARCHAR(128) NULL, …
Run Code Online (Sandbox Code Playgroud)

php sql where where-clause laravel

24
推荐指数
1
解决办法
13万
查看次数

你如何做Rails 3使用where子句选择IN

我正在使用Rails 3,我需要做一个选择,其中记录的主键是在结果先前的选择中.您可以使用IN直接使用SQL来轻松完成此操作.这是我做了我需要的明显不正确的方法.什么是Rails方式做得好:

@task = Link.find(params[:id])
clients = Client.where('task_id = ?',@task.id).select('DISTINCT(company_id)')
company_list = []
clients.each do |client|
  company_ids << client.company_id
end
@companies = Company.where(:id => company_ids)
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails where-clause ruby-on-rails-3

23
推荐指数
3
解决办法
2万
查看次数

MySQL WHERE <multiple-column> IN <subquery>

有没有办法(没有JOIN)WHERE在2列(OR)IN子查询上使用子句?目前,我正在做

WHERE 'col1' IN
(
    SELECT id FROM table
) OR 'col2' IN
(
    SELECT id FROM table
)
Run Code Online (Sandbox Code Playgroud)

而且我相信我能做得更好:).我也试过,WHERE ('col1', 'col2') IN <subquery>但MySQL说:Operand should contain 2 column(s)

谢谢你的帮助.

编辑:通过"不加入",我的意思是我正在进行许多加入:http://pastebin.com/bRfD21W9 ,正如您所看到的,子查询位于另一个表上.

mysql multiple-tables where-clause in-subquery

23
推荐指数
3
解决办法
4万
查看次数