相关疑难解决方法(0)

FIND_IN_SET()vs IN()

我的数据库中有2个表.一个是订单,一个是公司.

订单具有以下结构:

OrderID     |     attachedCompanyIDs
------------------------------------
   1                     1,2,3
   2                     2,4
Run Code Online (Sandbox Code Playgroud)

公司有这样的结构:

CompanyID      |        name
--------------------------------------
    1                 Company 1
    2                 Another Company
    3                 StackOverflow
    4                 Nothing
Run Code Online (Sandbox Code Playgroud)

要获得订单的公司名称,我可以这样查询:

SELECT name FROM orders,company
WHERE orderID = 1 AND FIND_IN_SET(companyID, attachedCompanyIDs)
Run Code Online (Sandbox Code Playgroud)

该查询工作正常,但以下查询没有.

SELECT name FROM orders,company
WHERE orderID = 1 AND companyID IN (attachedCompanyIDs)
Run Code Online (Sandbox Code Playgroud)

为什么第一个查询有效但第二个查询无效?

第一个查询返回:

name
---------------
Company 1
Another Company
StackOverflow
Run Code Online (Sandbox Code Playgroud)

第二个查询只返回:

name
---------------
Company 1
Run Code Online (Sandbox Code Playgroud)

为什么这样,为什么第一个查询返回所有公司,但第二个查询只返回第一个查询?

mysql

121
推荐指数
3
解决办法
21万
查看次数

MySQL查询以逗号分隔的字符串查找值

我的表中有一个字段COLORS (varchar(50)),SHIRTS其中包含逗号分隔的字符串,例如1,2,5,12,15,.每个数字代表可用的颜色.

当运行查询select * from shirts where colors like '%1%'以获得所有红色衬衫(颜色= 1)时,我还得到颜色为灰色(= 12)和橙色(= 15)的衬衫.

我应该如何重写查询,以便仅选择颜色1而不是所有包含数字1的颜色?

mysql sql database

80
推荐指数
5
解决办法
13万
查看次数

如何检查存储在varchar列中的逗号分隔列表中是否包含数字?

我有一个带有varchar列的表categoryIds.它包含一些用逗号分隔的ID,例如:

id       categoryIds
-------------------- 
1        3,7,12,33,43
Run Code Online (Sandbox Code Playgroud)

我想做一个select语句并检查该列中是否存在int.像这样的东西:

select * 
from myTable 
where 3 in (categoryIds)
Run Code Online (Sandbox Code Playgroud)

我知道这是可能在MySQL做这个,但它可以在SQL Server来完成呢?

我已经尝试将int转换为char,它运行以下语句:

select * 
from myTable 
where '3' in (categoryIds)
Run Code Online (Sandbox Code Playgroud)

但它似乎没有任何"开箱即用"支持逗号分隔列表,因为它什么都不返回.

sql sql-server

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

mysql在数组中选择查询

大家好我有这种情况

tabperfil
ta

bperfil.Cidade_Id -> values = 12,34,645,21
Run Code Online (Sandbox Code Playgroud)

然后我有一个 $id = 12

所以我试着做这个查询

select * from tabperfil limit 0,5
Run Code Online (Sandbox Code Playgroud)

但有一个condiction得到的价值Cidade_Id和检查$id

如果是相反的情况,我知道

select * from tabperfil WHERE Cidade_Id IN ($id)
Run Code Online (Sandbox Code Playgroud)

那么如何做这样的事情

select * from tabperfil WHERE ($id) in Cidade_Id
Run Code Online (Sandbox Code Playgroud)

php mysql arrays

1
推荐指数
1
解决办法
165
查看次数

MySQL在逗号分隔的集合中找到一个值

我将这样存储的值存储在字段中1,255,230,265

MySQL中是否有一个函数可以为我提供该字符串中的第二个值?在这种情况下会是255

我尝试使用locate,但这似乎并不意味着这样做。

mysql sql select sql-like find-in-set

1
推荐指数
1
解决办法
1803
查看次数

标签 统计

mysql ×4

sql ×3

arrays ×1

database ×1

find-in-set ×1

php ×1

select ×1

sql-like ×1

sql-server ×1