所以我有2个表country_codes和数据库。 如果表国家/地区代码中存在国家/地区代码,我需要从数据库中检索所有列。例如,我需要在我的国家代码表上有123 如果Phone_Number列的前3位数是123,则选择所有列。所以我将选择数字1234567。
表名:Country_Codes
+---------------+
|Country_Code |
+---------------+
| 123 |
| 456 |
| 556 |
| 231 |
+---------------+
表名:数据库
+---------------+--------+
|Phone_Number | Used |
+---------------+--------+
| 1234567 | No |
| 4568823 | No |
| 5562143 | No |
| 5582143 | No |
| 2319042 | No |
+---------------+--------+
我想要的结果是
表名:数据库
+---------------+--------+
|Phone_Number | Used |
+---------------+--------+
| 1234567 | No |
| 4568823 | No |
| 5562143 | No |
| 2319042 | No |
+---------------+--------+
我尝试过使用
SELECT * FROM database
WHERE database.phone_number LIKE (SELECT country_code FROM country_codes);
但我一直在犯错。
答案 0 :(得分:1)
在发布解决方案之前,需要考虑一些事项:
DATABASE
试试这个:
SELECT d.*
FROM database d
JOIN Country_Codes cc
ON cc.Country_Code like concat(d.Phone_Number, '%')
答案 1 :(得分:0)
Use exists and left keywords and get the result :
CREATE TABLE #Country_Codes(Country_Code VARCHAR(100))
INSERT INTO #Country_Codes(Country_Code)
SELECT 123 UNION ALL
SELECT 456 UNION ALL
SELECT 556 UNION ALL
SELECT 231
CREATE TABLE #Country_Database(Phone_Number VARCHAR(100), Used VARCHAR(100))
INSERT INTO #Country_Database(Phone_Number , Used)
SELECT '1234567','No' UNION ALL
SELECT '4568823','No' UNION ALL
SELECT '5562143','No' UNION ALL
SELECT '5582143','No' UNION ALL
SELECT '2319042','No'
SELECT Phone_Number,Used
FROM #Country_Database
WHERE EXISTS(SELECT 1 FROM #Country_Codes WHERE Country_Code =
LEFT(Phone_Number,3))