选择...其中id =任何值.可能吗?

Sim*_*mon 12 php mysql phpmyadmin

请看这张桌子

table
|id| |name| |order|
Run Code Online (Sandbox Code Playgroud)

我必须得到行,在哪里name = somethingorder = somevalue

所以我写

select `id` from `table` where `name` = 'something' and `order` = 'somevalue'
Run Code Online (Sandbox Code Playgroud)

但依赖于php逻辑,有时我需要获取所有行,其中name = something,独立于order值.我不想改变查询结构,因为在实践中有很多字段,并且可能的查询数量会变得非常大.所以我想保存查询的结构,当我需要按名称选择时,我想写这样的东西:

select `id` from `table` where `name` = 'something' and `order` = any value 
Run Code Online (Sandbox Code Playgroud)

可能吗?

谢谢

Cha*_*rch 12

嗯,这是一种黑客,但如果你真的需要这样做,它会像这样工作:

select `id` from `table` where `name` = 'something' and `order` = `order`
Run Code Online (Sandbox Code Playgroud)

然后你只是说"无论订单在哪里都是一样的",所以它总是如此.

  • 我会考虑改变结构,因为引用字段的语法与引用字符串的语法不同. (2认同)

Mic*_*sen 5

不,这是不可能的.你需要改变结构(可选择改为LIKE,这样你就可以使用'%',但这非常难看).

但是,您不需要编写其他查询来处理每个可能的组合.您可以简单地动态创建查询:

//create base query
$query = "select `id` from `table` where `name` = 'something' ";

//add order if we need it
if ($use_order)
  $query .= "and `order` = 'somevalue' ";

//repeat for any other optional part
Run Code Online (Sandbox Code Playgroud)

请注意,您当然应该采取适当的措施来避免SQL注入和其他安全问题 - 我没有在此处包含此内容以简化操作.