如何 select 行在任何 selected 列中包含任何 selected 值? MySQL
How do I select rows that contain any of the selected values in any of the selected columns? MySQL
我非常想获取在任何相关列中包含任何相关标签的所有行。
查看示例行:
[LeadID Leadname Ratings AvgRating Address Website Phone TimesOpen Category LeadDescription CurrentStatus]
1 Siena Tuscan Steakhouse 396 4.300 104 S Broadway, Wichita, KS 67202, United States http://www.sienawichita.com/ +1 316-440-5300 LGBTQ+ friendly2022-05-19 Thursday 5PM–12AM
2022-05-20 Friday 6:30–10AM
2022-05-21 Saturday 7–11AM
2022-05-22 Sunday 7–11AM
2022-05-23 Monday 6:30–10AM
2022-05-24 Tuesday 6:30–10AM
2022-05-25 Wednesday 5PM–10AM
restaurants Hotel restaurant-bar offering refined Italian plates & many wines in a warm & elegant atmosphere.
我认为您不需要以结构化形式查看它,因此对于它的混乱,我深表歉意。
[ ]中的都是列名,后面是各自的字段。
这是我的查询
SELECT LeadID
FROM cleancopy
WHERE
Website OR LeadName OR LeadDescription OR Category
IN ('%Event%' OR '%Live%' OR '%Music%' OR '%Venue%');
此查询返回所有行未过滤。
我希望查询 select 所有包含任意数量相关标签“Event”、“Live”、“Music”、“Venue”的行,在任何列名 Website、LeadName 中, LeadDescription, 类别。
因此一个或所有标签可以属于一种或所有属性类型。
更简单地说,我正在尝试过滤掉任何不包含任何我想要的关键字的行。
第一件事:“我认为您不需要以结构化形式查看它”是一个非常糟糕的假设。我们确实需要这个,因为它可以更容易地提供一个好的答案。
第二件事:这不是 SQL 完成的那种数据检查。所以没有简单的方法,特别是当你真的需要一个字符串列表和类似的条件时。这种复杂的数据处理最好避免或在 SQL 之外和应用程序内完成。
无论如何,完成您描述的最短方法是 CONCAT
所有列,然后使用 OR
.
搜索您的字符串
SELECT leadid FROM cleancopy WHERE
CONCAT(website,leadname,leaddescription,category) LIKE '%Event%'
OR CONCAT(website,leadname,leaddescription,category) LIKE '%Live%'
OR CONCAT(website,leadname,leaddescription,category) LIKE '%Music%'
OR CONCAT(website,leadname,leaddescription,category) LIKE '%Venue%'
我非常想获取在任何相关列中包含任何相关标签的所有行。
查看示例行:
[LeadID Leadname Ratings AvgRating Address Website Phone TimesOpen Category LeadDescription CurrentStatus]
1 Siena Tuscan Steakhouse 396 4.300 104 S Broadway, Wichita, KS 67202, United States http://www.sienawichita.com/ +1 316-440-5300 LGBTQ+ friendly2022-05-19 Thursday 5PM–12AM
2022-05-20 Friday 6:30–10AM
2022-05-21 Saturday 7–11AM
2022-05-22 Sunday 7–11AM
2022-05-23 Monday 6:30–10AM
2022-05-24 Tuesday 6:30–10AM
2022-05-25 Wednesday 5PM–10AM
restaurants Hotel restaurant-bar offering refined Italian plates & many wines in a warm & elegant atmosphere.
我认为您不需要以结构化形式查看它,因此对于它的混乱,我深表歉意。 [ ]中的都是列名,后面是各自的字段。
这是我的查询
SELECT LeadID
FROM cleancopy
WHERE
Website OR LeadName OR LeadDescription OR Category
IN ('%Event%' OR '%Live%' OR '%Music%' OR '%Venue%');
此查询返回所有行未过滤。
我希望查询 select 所有包含任意数量相关标签“Event”、“Live”、“Music”、“Venue”的行,在任何列名 Website、LeadName 中, LeadDescription, 类别。
因此一个或所有标签可以属于一种或所有属性类型。
更简单地说,我正在尝试过滤掉任何不包含任何我想要的关键字的行。
第一件事:“我认为您不需要以结构化形式查看它”是一个非常糟糕的假设。我们确实需要这个,因为它可以更容易地提供一个好的答案。
第二件事:这不是 SQL 完成的那种数据检查。所以没有简单的方法,特别是当你真的需要一个字符串列表和类似的条件时。这种复杂的数据处理最好避免或在 SQL 之外和应用程序内完成。
无论如何,完成您描述的最短方法是 CONCAT
所有列,然后使用 OR
.
SELECT leadid FROM cleancopy WHERE
CONCAT(website,leadname,leaddescription,category) LIKE '%Event%'
OR CONCAT(website,leadname,leaddescription,category) LIKE '%Live%'
OR CONCAT(website,leadname,leaddescription,category) LIKE '%Music%'
OR CONCAT(website,leadname,leaddescription,category) LIKE '%Venue%'