mysql怎么实现查题 mysql查询方式

MySql怎么实现多条件查询呢?我有五种条件。关键是我想知道查询语句该怎么精简。

给你思路,具体你自己去写:

创新互联专注于网站建设|企业网站维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖成都咖啡厅设计等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身建设品质网站。

1.你这个是有二类条件:必选的:前二个2选1;

后面三个条件是可选的,选全部等于没选就没必要加这个条件,关键字没填的话等同;

所以你其实就是1-4个条件。

2.实现建议用存储过程,参数根据实际情况传递,条件越多查询越慢,越慢(耗cpu和io)的条件要放在语句的最后。

C#连接mysql数据库如何实现多条件查询

给你一个稍微复杂一点的查询,我设计的

看上图我把第一列标签后面的控件命名有规律,比如计划工厂后面文本框是"计划工厂t",Exapt命名为"计划工厂c",后面还隐藏一个listbox,命名为"计划工厂l"。

计划工厂  这个名称本身就是我要查询的表里面包含的字段。

利用这种界面,我要完成一些复杂点的查询:点文本框里的小图标按钮,弹出工具,可以输入多条件,条件可以成立为模糊条件(用*代替不认识部分),也可以成立为否决条件。

选中Exapt全部否定所成立条件;点击执行按钮,有条件的成立条件,无条件的不成立。

所以这种东西贯穿软件我就不能每个都去做,就只能写一个类文件:

public class conditionset

{

public void load_condit(Panel p)

{

foreach (Control ctl in p.Controls)

{

if (ctl is SkinTextBox)

{

SkinTextBox sktxt = (SkinTextBox)p.Controls[ctl.Name];

ListBox list = (ListBox)p.Controls[sktxt.Name.Substring(0, sktxt.Name.Length - 1) + "l"];

sktxt.IconClick += (Object sen, EventArgs ed) =

{

ctl.condition toolform = new ctl.condition();

if (list.Items.Count  0)

{

sktxt.Text = "┅";

sktxt.ReadOnly = true;

}

foreach (var sm in list.Items)

{

toolform.dv.Rows.Add(sm.ToString());

}

toolform.Show();

toolform.cleari += (Object send, EventArgs er) =

{

sktxt.Text = "";

sktxt.ReadOnly = false;

};

toolform.subm += (Object send, EventArgs er) =

{

list.Items.Clear();

foreach (DataGridViewRow dvr in toolform.dv.Rows)

{

if (Convert.ToString(dvr.Cells[0].Value) != "")

{

list.Items.Add(Convert.ToString(dvr.Cells[0].Value));

}

}

sktxt.Text = "┅";

sktxt.ReadOnly = true;

};

};

}

}

}

public string condit(Panel p)

{

string master_condition = "";

foreach (Control ctl in p.Controls)

{

//遍历panel查找条件

#region 

string condition = "";

if (ctl is SkinTextBox)

{

//文本框条件组合

#region

SkinTextBox sktxt = (SkinTextBox)p.Controls[ctl.Name];

string ziduan_name = sktxt.Name.Substring(0, sktxt.Name.Length - 1);

SkinCheckBox skck = (SkinCheckBox)p.Controls[ctl.Name.Substring(0, ctl.Name.Length - 1) + "c"];

ListBox list = (ListBox)p.Controls[ctl.Name.Substring(0, ctl.Name.Length - 1) + "l"];

if (sktxt.Text != "")

{

if (sktxt.Text == "┅")

{

string blur_str = "", blur = "";

foreach (var itm in list.Items)

{

if (itm.ToString().Contains("*"))

{

if (skck.Checked == true)

{

blur += " and " + ziduan_name + " not like '" + itm.ToString().Replace("*", "%") + "'";

}

else

{

blur += " or " + ziduan_name + " like '" + itm.ToString().Replace("*", "%") + "'";

}

}

else

{

blur_str += "'" + Convert.ToString(itm) + "',";

}

}

string blur_sql = (blur == "") ? "" : blur.Substring(4, blur.Length - 4).Trim();

string in_condition = "", like_condition = "";

if (skck.Checked == true)

{

in_condition = ziduan_name + " not in ";

like_condition = " and ";

}

else

{

in_condition = ziduan_name + " in ";

like_condition = " or ";

}

string contains_sql = (blur_str == "") ? "" : in_condition + "(" + blur_str.Substring(0, blur_str.Length - 1) + ")";

condition = contains_sql + blur_sql;

if (blur_sql != ""  contains_sql != "")

{

condition = contains_sql + like_condition + blur_sql;

}

else

{

condition = contains_sql + blur_sql;

}

}

else

{

if (!sktxt.Text.Contains("*"))

{

if (skck.Checked == true)

{

condition = ziduan_name + "'" + sktxt.Text + "'";

}

else

{

condition = ziduan_name + "='" + sktxt.Text + "'";

}

}

else

{

if (skck.Checked == true)

{

condition = ziduan_name + " not like '" + sktxt.Text.Replace("*", "%") + "'";

}

else

{

condition = ziduan_name + " like '" + sktxt.Text.Replace("*", "%") + "'";

}

}

}

}

#endregion

}

if (ctl is SkinDateTimePicker)

{

//日期条件组合

#region

if (ctl.Name.Substring(ctl.Name.Length - 1, 1) != "t")

{

SkinDateTimePicker skdate_sta = (SkinDateTimePicker)p.Controls[ctl.Name];

SkinDateTimePicker skdate_end = (SkinDateTimePicker)p.Controls[ctl.Name + "t"];

if (skdate_sta.text != "")

{

if (skdate_end.text == "")

{

condition = skdate_sta.Name + "='" + skdate_sta.text + "'";

}

else

{

condition = skdate_sta.Name + "='" + skdate_sta.text + "' and " + skdate_sta.Name + "='" + skdate_end.text + "'";

}

}

}

#endregion

}

master_condition += (condition == "") ? "" : "(" + condition + ") and ";

#endregion //遍历panel查找条件

}

string condition_sql = (master_condition == "") ? "" : master_condition.Substring(0, master_condition.Length - 5);

return condition_sql;

}

}

工具用一个窗体代替:

public partial class condition : Form

{

public condition()

{

InitializeComponent();

}

public event EventHandler subm;

public event EventHandler cleari;

private void submit_Click(object sender, EventArgs e)

{

subm(sender, e);

this.Dispose();

}

private void clearit_Click(object sender, EventArgs e)

{

this.Dispose();

dv.Rows.Clear();

cleari(sender, e);

}

}

当我们执行多条件的时候就等于拼接条件

简单的mysql查询问题,请指教.

如何知道表abc的行数

select count(*) from abc;

查询ID内容为5的行

select * from abc where id=5;

查询名字等于a的所有字段

select * from abc where name='a';

名字为b并且id大于3的内容

select * from abc where name='b' and id3;

名字为d并且id大于3并且age大于15

select * from abc where name='d' and id3 and age15;

将id字段的内容去除重复

select distinct id from abc;

查询age在15-16岁的内容

select * from abc where age between 15 and 16;

根据age字段内容进行升序排列

select * from abc order by age;

根据age字段内容进行降序排列

select * from abc order by age desc;

显示查询结果的前两行

select top 2 from abc;

mysql查询题目

请参考下列语句

1)用最早购买时间作为判断条件

select b.userid,min(u.`name`) as `name`,

min(b.`time`) as `time` from user u inner join buy b on u.id=b.userid group by b.userid;

2) 用每个用户第一条购买记录id做判断。

select b.userid,u.`name`,b.`time` from

user u inner join

(select * from buy where id in

(select min(id) from buy group by

userid)) b on u.id=b.userid;

如果想将没有购买记录的客户也列出来,那么上述两个语句中的inner join请该为left join。


网站栏目:mysql怎么实现查题 mysql查询方式
链接分享:http://cdiso.cn/article/doescpd.html

其他资讯