Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql=:1-那是什么?如何仅按键关联数据,而不按名称或文本值关联数据?_Mysql_Sql - Fatal编程技术网

MySql=:1-那是什么?如何仅按键关联数据,而不按名称或文本值关联数据?

MySql=:1-那是什么?如何仅按键关联数据,而不按名称或文本值关联数据?,mysql,sql,Mysql,Sql,我将为mysql关系数据库编写如下查询: select email, IP, PCname, Type, OwnerName from comps, owners where OwnerName=*puthtmlInputTextValueHere* and IP=*IPhtmlInputTextValueHere* or Type=*typehtmlInputTextValueHere* or pcname=*pcnameHtmlInputTextValueHere* 查询要求:

我将为mysql关系数据库编写如下查询:

select email, IP, PCname, Type, OwnerName
from comps, owners
where OwnerName=*puthtmlInputTextValueHere*
  and IP=*IPhtmlInputTextValueHere*
  or Type=*typehtmlInputTextValueHere*
  or pcname=*pcnameHtmlInputTextValueHere*
查询要求:所有内容都应该仅通过键关联,而不是通过名称或文本值。怎么做?这是什么意思

我举的例子是:

select o.email, c.pcname, c.ip, c.type
from owners o, comps c
where
  (c.ownername=o.key)
  and ( (c.ip=:1) or (c.type=:1) or (c.pcname=:1))
=:1--那是什么部分? 那么,在这里的where部分后面必须是什么

另一个例子:

select pcname
from comps c, laps l, gen g
where (g.key=:1) and (l.key=g.LapKey) and (c.LapKey=l.key)
什么是g.key=:1?什么是l.key


通常情况下,我会使用条件,比如columnName=someValue,但要求是不要使用值,那么如何得到结果

您提供的示例查询不是纯SQL。它们似乎是编程接口用来初始化对象(通常称为预处理语句)的代码。这样的对象可以多次用于执行相同或类似的查询

预处理语句允许对查询进行参数化,以便您可以将不同的实际值插入查询中的不同位置。在这样的上下文中:1几乎肯定会引用第一个这样的参数

关于第二个例子中的L.KEY,考虑OFF子句:

查看每个表名后面如何跟一个字母标签?这些标签称为别名,正如您可能会想到的那样,它们可以在查询中的其他位置代替相应的表名使用。别名可以更长,但通常只有几个字符长。如果它们与表名本身一样长/复杂,那么就没有什么意义了。考虑到这些知识,考虑混淆你的表达:

(l.key=g.LapKey)

这只是一个条件表达式,对于FROM子句中指定的联接行,其计算结果为true,表l==laps提供的键值与表g==gen提供的LapKey值相同。回到第一个问题,这是一个通过相关键关联表laps和gen的示例。

从何处获得此答案?可能/The:1可能是参数的占位符。这不是我的MySQL单独使用的。这些可能是一个准备好的语句的参数,比如那些,但是我们需要查看上下文的周围代码。谢谢!!在我的java代码中,我使用准备好的语句。pst=conn.PrepareStatement从表0中选择电子邮件,其中PCname=?pst.setString1,myValue;那么我用什么?用符号代替:1-对吗?什么是l.key?它可以不是l表的键列吗?某种关系。。。我问,因为在那个表中没有像key这样的列。。。就像给我的例子说的那样谢谢你!l、 key=g.LapKey,所以key和LapKey都是相应表的现有列,对吗?我问,因为l表中没有键这样的列。。。正如给我的例子所说。它可以是l.Key而不是column吗?我找到了答案:l.Key是主键,就像guid。。。e、 g.l.guid=g.lapkey
(l.key=g.LapKey)